将PipelinedRDD转换为数据帧

时间:2017-07-06 19:49:11

标签: python lambda pyspark spark-dataframe rdd

我正在尝试将pyspark中的pipelinedRDD转换为数据帧。这是代码段:

newRDD = rdd.map(lambda row: Row(row.__fields__ + ["tag"])(row + (tagScripts(row), ))) df = newRDD.toDF()

当我运行代码时,我收到此错误:

'list' object has no attribute 'encode'

我尝试了多种其他组合,例如使用以下方法将其转换为Pandas数据帧:

newRDD = rdd.map(lambda row: Row(row.__fields__ + ["tag"])(row + (tagScripts(row), ))) df = newRDD.toPandas()

但后来我收到了这个错误:

AttributeError: 'PipelinedRDD' object has no attribute 'toPandas'

非常感谢任何帮助。谢谢你的时间。

1 个答案:

答案 0 :(得分:0)

rdd.toDF()rdd.toPandas()仅用于SparkSession

要修复您的代码,请尝试以下操作:

spark = SparkSession.builder.getOrCreate()

rdd = spark.sparkContext.textFile()
newRDD = rdd.map(...)
df = newRDD.toDF() or newRDD.toPandas()