当前位置: 首页 > 知识库问答 >
问题:

pyspark-py4j.protocol.py4jJavaerror,在我的win10笔记本电脑上运行spark线性回归模型时

谭嘉容
2023-03-14

我尝试在我的win10笔记本电脑上运行PySpark脚本,该脚本正在用PySpark和Spark MLlib建立线性回归模型,

我的代码如下:

from pyspark import SparkConf, SparkContext
from pyspark.sql import SQLContext
from pyspark.ml.feature import VectorAssembler
from pyspark.ml.regression import LinearRegression
import pandas as pd

sc = SparkContext()
sqlContext = SQLContext(sc)

    house_df = sqlContext.read.format('com.databricks.spark.csv').options(header='true', inferschema='true').load(
        'data/boston.csv')
house_df1 = house_df.drop('ID')

import six

for i in house_df1.columns:
    if not (isinstance(house_df1.select(i).take(1)[0][0], six.string_types)):
        print("Correlation to MEDV for ", i, house_df1.stat.corr('medv', i))

vectorAssembler = VectorAssembler(inputCols=['crim', 'zn', 'indus',
                                             'chas', 'nox', 'rm', 'age', 'dis', 'rad', 'tax',
                                             'ptratio', 'black', 'lstat'], outputCol='features')
vhouse_df = vectorAssembler.transform(house_df1)

splits = vhouse_df.randomSplit([0.7, 0.3])
train_df = splits[0]
test_df = splits[1]

lr = LinearRegression(featuresCol='features', labelCol='medv', maxIter=10, regParam=0.3,
                      elasticNetParam=0.8)

lr_model = lr.fit(train_df)

print("Coefficients: " + str(lr_model.coefficients))
print("Intercept: " + str(lr_model.intercept))

我有如下错误消息:

Traceback (most recent call last):
  File "PredictingBostonHousePrice.py", line 98, in <module>
    lr_model = lr.fit(train_df)
  File "C:\Python3\lib\site-packages\pyspark\ml\base.py", line 132, in fit
    return self._fit(dataset)
  File "C:\Python3\lib\site-packages\pyspark\ml\wrapper.py", line 288, in _fit
    java_model = self._fit_java(dataset)
  File "C:\Python3\lib\site-packages\pyspark\ml\wrapper.py", line 284, in _fit_java
    self._transfer_params_to_java()
  File "C:\Python3\lib\site-packages\pyspark\ml\wrapper.py", line 124, in _transfer_params_to_java
    pair = self._make_java_param_pair(param, paramMap[param])
  File "C:\Python3\lib\site-packages\pyspark\ml\wrapper.py", line 113, in _make_java_param_pair
    java_param = self._java_obj.getParam(param.name)
  File "C:\Python3\lib\site-packages\py4j\java_gateway.py", line 1257, in __call__
    answer, self.gateway_client, self.target_id, self.name)
  File "C:\Python3\lib\site-packages\pyspark\sql\utils.py", line 63, in deco
    return f(*a, **kw)
  File "C:\Python3\lib\site-packages\py4j\protocol.py", line 328, in get_return_value
    format(target_id, ".", name), value)
py4j.protocol.Py4JJavaError: An error occurred while calling o132.getParam.
: java.util.NoSuchElementException: Param epsilon does not exist.
        at org.apache.spark.ml.param.Params$$anonfun$getParam$2.apply(params.scala:601)
        at org.apache.spark.ml.param.Params$$anonfun$getParam$2.apply(params.scala:601)
        at scala.Option.getOrElse(Option.scala:121)
        at org.apache.spark.ml.param.Params$class.getParam(params.scala:600)
        at org.apache.spark.ml.PipelineStage.getParam(Pipeline.scala:42)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)
        at py4j.reflection.MethodInvoker.invoke(MethodInvoker.java:244)
        at py4j.reflection.ReflectionEngine.invoke(ReflectionEngine.java:357)
        at py4j.Gateway.invoke(Gateway.java:280)
        at py4j.commands.AbstractCommand.invokeMethod(AbstractCommand.java:132)
        at py4j.commands.CallCommand.execute(CallCommand.java:79)
        at py4j.GatewayConnection.run(GatewayConnection.java:214)
        at java.lang.Thread.run(Thread.java:748)

共有1个答案

李法
2023-03-14

全部:

在我的win10笔记本电脑上重新安装scala(2.12.6)和spark(2.3.0)解决了我的问题。希望我的解决方案能帮助任何有类似问题的人。

非常感谢对我的问题提出意见的人。

 类似资料:
  • GitHub问题链接: https://github.com/kubernetes/minikube/issues/1994 Windows上的多克程序已经安装好了,泊客程序运行正常,容器运行正常。 泊克停止并运行,用于运行K8s设置。两种情况,状态相同 - 迷你库贝没有启动。 我安装了Google Cloud SDK,然后启动minikube/kubectl来设置K8S,仅供参考。Hyper-V

  • 每当我从Git中心下载Flutter项目并尝试运行它时,我都会收到以下错误消息。系统找不到指定的路径。错误:无法找到或加载主类org.gradle.wrapper。GradleWrapperMain异常:Gradle任务汇编调试失败,退出代码为1 我的Android Studio的当前版本是:4.0.1和Gradle版本是:分布Url=https://services.gradle.org/dis

  •   回归问题的条件或者说前提是 1) 收集的数据 2) 假设的模型,即一个函数,这个函数里含有未知的参数,通过学习,可以估计出参数。然后利用这个模型去预测/分类新的数据。 1 线性回归的概念   线性回归假设特征和结果都满足线性。即不大于一次方。收集的数据中,每一个分量,就可以看做一个特征数据。每个特征至少对应一个未知的参数。这样就形成了一个线性模型函数,向量表示形式:   这个就是一个组合问题,

  • 线性回归模型(linear regression) 1.模型定义 给定数据集,$$T={(x{(1)},y{(1)}),(x{(2)},y{(2)}),...,(x{(m)},y{(m)})}$$,其中$$x{(i)}=(1, x_1, x_2, ..., x_n)T\in X= R{n+1}$$,$$y{(i)}\in Y=R$$,线性回归模型试图学到一个通过属性的线性组合来进行预测的函数,即

  • 我有一个简单的jupyter笔记本,比如说foo。ipynb。我只想以通常的方式运行nbconvert:在本地机器上执行!jupyter nbconvert foo公司。ipynb,或jupyter notebook foo。外壳中的ipynb。在Google Colaboratory上,这不起作用。当然这是因为foo。ipynb未在驱动器上本地运行,但在这种情况下,连接驱动器和Colab的常用方

  • 已在远程linux计算机上安装了Anaconda Python。 在本地Windows上使用puty登录到远程linux机器以远程启动Ipython笔记本。它从8888端口开始。 遥远的_user@remote_host$ipython笔记本电脑--无浏览器--端口=8888 现在我需要在本地浏览器上访问这个笔记本。尝试过做ssh隧道。 C:\用户\windowsUser SSH:连接到主机rem