gpt4 book ai didi

python - “PipelinedRDD”对象在 PySpark 中没有属性 'toDF'

转载 作者:IT老高 更新时间:2023-10-28 21:32:37 26 4
gpt4 key购买 nike

我正在尝试加载 SVM 文件并将其转换为 DataFrame,以便可以使用 Spark 的 ML 模块 (Pipeline ML)。我刚刚在 Ubuntu 14.04 上安装了新的 Spark 1.5.0(未配置 spark-env.sh)。

我的 my_script.py 是:

from pyspark.mllib.util import MLUtils
from pyspark import SparkContext

sc = SparkContext("local", "Teste Original")
data = MLUtils.loadLibSVMFile(sc, "/home/svm_capture").toDF()

我正在使用:./spark-submit my_script.py

我得到了错误:

Traceback (most recent call last):
File "/home/fred-spark/spark-1.5.0-bin-hadoop2.6/pipeline_teste_original.py", line 34, in <module>
data = MLUtils.loadLibSVMFile(sc, "/home/fred-spark/svm_capture").toDF()
AttributeError: 'PipelinedRDD' object has no attribute 'toDF'

我无法理解的是,如果我运行:

data = MLUtils.loadLibSVMFile(sc, "/home/svm_capture").toDF()

直接在 PySpark shell 中运行。

最佳答案

toDF 方法是猴子补丁 executed inside SparkSession (SQLContext constructor in 1.x) constructor为了能够使用它,您必须首先创建一个 SQLContext(或 SparkSession):

# SQLContext or HiveContext in Spark 1.x
from pyspark.sql import SparkSession
from pyspark import SparkContext

sc = SparkContext()

rdd = sc.parallelize([("a", 1)])
hasattr(rdd, "toDF")
## False

spark = SparkSession(sc)
hasattr(rdd, "toDF")
## True

rdd.toDF().show()
## +---+---+
## | _1| _2|
## +---+---+
## | a| 1|
## +---+---+

更不用说你首先需要一个 SQLContextSparkSession 来使用 DataFrames

关于python - “PipelinedRDD”对象在 PySpark 中没有属性 'toDF',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32788387/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com