Pyspark 我可以将pandas数据帧转换为spark rdd吗?

Pyspark 我可以将pandas数据帧转换为spark rdd吗?,pyspark,Pyspark,Pbm: a) 将本地文件读入Panda数据帧,如PD_DF b) 操纵/聚集PD_DF并将列添加到数据帧 c) 需要使用spark将PD_DF写入HDFS。如何操作?您可以使用SQLContext对象来调用createDataFrame方法,该方法接受一个输入data,该数据可以是PandasDataFrame对象。假设DataFrame是Pandas.core.frame.DataFrame类型,然后在spark 2.1-Pyspark中我这样做了 rdd_data = spark.crea

Pbm:

a) 将本地文件读入Panda数据帧,如PD_DF b) 操纵/聚集PD_DF并将列添加到数据帧
c) 需要使用spark将PD_DF写入HDFS。如何操作?

您可以使用
SQLContext
对象来调用
createDataFrame
方法,该方法接受一个输入
data
,该数据可以是Pandas
DataFrame
对象。

假设
DataFrame
是Pandas.core.frame.DataFrame类型,然后在spark 2.1-Pyspark中我这样做了

rdd_data = spark.createDataFrame(dataframe)\
                .rdd
在这种情况下,如果要重命名任何列或只选择少数列,请在使用
.rdd


希望它也适用于您。

我使用Spark 1.6.0。首先将pandas数据帧转换为spark数据帧,然后再转换为spark数据帧spark rdd

sparkDF = sqlContext.createDataFrame(pandasDF)
sparkRDD = sparkDF.rdd.map(list)
type(sparkRDD)
pyspark.rdd.PipelinedRDD

为什么不直接将本地文件读入Spark数据帧中呢?正如我所说的,在使用Spark将数据写入HDFS之前,我想使用pandas DF来处理数据。不确定spark dataframe是否支持pandas dataframe支持的所有功能我知道该选项。但是尝试看看是否有一种直接的方法可以在不创建schemaRDD的情况下将DF转换为RDD。
schemaRDD
已经被Spark 1.3中的数据帧所取代。如果不希望RDDs元素成为
实例,请调用
df.rdd.map(lambda x:[e代表x中的e])
。虽然我真的不明白你为什么要那样。您希望保存为什么格式?计划是从NFS读取csv文件,在使用panda df进行操作后,将其交换到spark rdd,并将其作为avro/parquet文件写入hdfs。另外,spark DF是否支持pandas DF当前支持的所有功能?在Documentton中,当schema为None时,它将尝试从数据推断模式(列名和类型),数据应该是Row的RDD、namedtuple或dict。