pyspark:将DataFrame转换为RDD [string]

时间:2016-02-17 13:21:52

标签: python apache-spark dataframe pyspark apache-spark-sql

我想将pyspark.sql.dataframe.DataFrame转换为pyspark.rdd.RDD[String]

我将DataFrame df转换为RDD data

data = df.rdd
type (data)
## pyspark.rdd.RDD 

新RDD data包含Row

first = data.first()
type(first)
## pyspark.sql.types.Row

data.first()
Row(_c0=u'aaa', _c1=u'bbb', _c2=u'ccc', _c3=u'ddd')

我想将Row转换为String列表,如下例所示:

u'aaa',u'bbb',u'ccc',u'ddd'

由于

2 个答案:

答案 0 :(得分:13)

PySpark Row只是tuple,可以这样使用。您需要的只是一个简单的map(或flatMap,如果您想要展平行)list

data.map(list)

或者如果您期望不同的类型:

data.map(lambda row: [str(c) for c in row])

答案 1 :(得分:0)

可接受的答案是旧的。使用Spark 2.0,您现在必须通过在语句中添加.rdd来明确声明要转换为rdd。因此,等同于Spark 1.0中的以下语句:

data.map(list)

现在应该是:

data.rdd.map(list)

在Spark 2.0中。 与this post中接受的答案有关。