pyspark:将DataFrame转换为RDD [string]

Tor*_*ren 7 python dataframe apache-spark apache-spark-sql pyspark

我想转换pyspark.sql.dataframe.DataFramepyspark.rdd.RDD[String]

我将DataFrame转换df为RDD data:

data = df.rdd
type (data)
## pyspark.rdd.RDD 
Run Code Online (Sandbox Code Playgroud)

新的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')
Run Code Online (Sandbox Code Playgroud)

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

u'aaa',u'bbb',u'ccc',u'ddd'
Run Code Online (Sandbox Code Playgroud)

谢谢

zer*_*323 14

PySpark Row只是一个tuple,可以这样使用.你需要的只是一个简单的map(或者flatMap如果你想要平整行)list:

data.map(list)
Run Code Online (Sandbox Code Playgroud)

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

data.map(lambda row: [str(c) for c in row])
Run Code Online (Sandbox Code Playgroud)

  • 感谢@ zero323和你的答案我的学习曲线越来越好 (2认同)