【发布时间】:2021-04-01 07:38:06
【问题描述】:
我正在使用 pyspark 研究 Spark 3.0.1,并且已经为使用简单的 OLS 回归设置了一些数据
data = results.select('OrderMonthYear', 'SaleAmount').rdd.map(lambda row: LabeledPoint(row[1], [row[0]])).toDF()
OrderMonthYear 是我的特征列 (int),SaleAmount 是响应 (float)。 LabeledPoint 方法是从 pyspark.mllib.regression 导入的。然后我尝试用
from pyspark.ml.regression import LinearRegression
lr = LinearRegression()
modelA = lr.fit(data, {lr.regParam:0.0})
获取此异常
IllegalArgumentException: requirement failed: Column features must be of type struct<type:tinyint,size:int,indices:array<int>,values:array<double>> but was actually struct<type:tinyint,size:int,indices:array<int>,values:array<double>>.
这显然不是很有帮助,因为所需和传递的功能似乎是相同的结构。我在网上搜索过,只为 java 或为自己构建结构的人找到了这个问题的答案。该异常是从一个 util 函数中抛出的,该函数刚刚抛出了一个 java 异常 (#Hide where the exception came from that shows a non-Pythonic JVM exception message.),所以我无法进一步调试。
【问题讨论】:
标签: python apache-spark pyspark apache-spark-mllib apache-spark-ml