Pyspark ML 错误对象没有属性映射
Pyspark ML error object has no attribute map
下面是我的数据框和代码
df=
a b c d
1 3 10 110
2 5 12 112
3 6 17 112
4 8 110 442
下面是我的代码
spark =SparkSession.builder.appName('dev_member_validate_spark').config('spark.sql.crossJoin.enabled','true').getOrCreate()
sqlCtx=SQLContext(spark)
from pyspark.ml.linalg import DenseVector
from pyspark.mllib.regression import LabeledPoint
temp = df.select("a","b").map(lambda line:LabeledPoint(line[0],[line[1:]]))
当我执行 temp= 行时出现以下错误
Error:Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/opt/cloudera/parcels/SPARK2-2.1.0.cloudera1-
1.cdh5.7.0.p0.120904/lib/spark2/python/pyspark/sql/dataframe.py", line 964, in __getattr__
"'%s' object has no attribute '%s'" % (self.__class__.__name__, name))
AttributeError: 'DataFrame' object has no attribute 'map'
我在 Cloudera 5.10 中使用 pyspark 2.1
我正在参考link做上面的脚本:
https://databricks.com/product/getting-started-guide/machine-learning
请帮我解决这个问题。
那是因为Dataframe根本就没有'map'属性。在 Spark 2.0 之前,它有,但现在没有了。 Databricks 没有更新教程。您可以 map 通过转换为 rdd,即 df.rdd
首先请注意:
有 两个 个独立的 ML 库:
第一个(您从中导入了线性代数库)是 pyspark.ml。
第二个是 pyspark.mllib,您从中导入了 LabelPoint
.
尝试互操作这两个包是一条充满痛苦的道路。努力坚持一个,坚持下去。
其次,至于你遇到的异常:
temp = df.select("a","b").map(...)
df
是一个 DataFrame
,它没有 map
方法。
但请接受我的第一个建议 - 不要混合使用 mllib 和 ml 模块。
下面是我的数据框和代码
df=
a b c d
1 3 10 110
2 5 12 112
3 6 17 112
4 8 110 442
下面是我的代码
spark =SparkSession.builder.appName('dev_member_validate_spark').config('spark.sql.crossJoin.enabled','true').getOrCreate()
sqlCtx=SQLContext(spark)
from pyspark.ml.linalg import DenseVector
from pyspark.mllib.regression import LabeledPoint
temp = df.select("a","b").map(lambda line:LabeledPoint(line[0],[line[1:]]))
当我执行 temp= 行时出现以下错误
Error:Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/opt/cloudera/parcels/SPARK2-2.1.0.cloudera1-
1.cdh5.7.0.p0.120904/lib/spark2/python/pyspark/sql/dataframe.py", line 964, in __getattr__
"'%s' object has no attribute '%s'" % (self.__class__.__name__, name))
AttributeError: 'DataFrame' object has no attribute 'map'
我在 Cloudera 5.10 中使用 pyspark 2.1
我正在参考link做上面的脚本:
https://databricks.com/product/getting-started-guide/machine-learning
请帮我解决这个问题。
那是因为Dataframe根本就没有'map'属性。在 Spark 2.0 之前,它有,但现在没有了。 Databricks 没有更新教程。您可以 map 通过转换为 rdd,即 df.rdd
首先请注意:
有 两个 个独立的 ML 库:
第一个(您从中导入了线性代数库)是 pyspark.ml。
第二个是 pyspark.mllib,您从中导入了 LabelPoint
.
尝试互操作这两个包是一条充满痛苦的道路。努力坚持一个,坚持下去。
其次,至于你遇到的异常:
temp = df.select("a","b").map(...)
df
是一个 DataFrame
,它没有 map
方法。
但请接受我的第一个建议 - 不要混合使用 mllib 和 ml 模块。