pyspark :将 DataFrame 转换为 RDD[string]
pyspark : Convert DataFrame to RDD[string]
我想将 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'
谢谢
PySpark Row
只是一个 tuple
,可以这样使用。您在这里只需要一个简单的 map
(或者 flatMap
,如果您也想压平行)和 list
:
data.map(list)
或者如果您期望不同的类型:
data.map(lambda row: [str(c) for c in row])
接受的答案是旧的。使用 Spark 2.0,您现在必须通过在语句中添加 .rdd
来明确声明您正在转换为 rdd。因此,在 Spark 1.0 中相当于这个语句:
data.map(list)
现在应该是:
data.rdd.map(list)
在 Spark 2.0 中。
与 .
中已接受的答案相关
我想将 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'
谢谢
PySpark Row
只是一个 tuple
,可以这样使用。您在这里只需要一个简单的 map
(或者 flatMap
,如果您也想压平行)和 list
:
data.map(list)
或者如果您期望不同的类型:
data.map(lambda row: [str(c) for c in row])
接受的答案是旧的。使用 Spark 2.0,您现在必须通过在语句中添加 .rdd
来明确声明您正在转换为 rdd。因此,在 Spark 1.0 中相当于这个语句:
data.map(list)
现在应该是:
data.rdd.map(list)
在 Spark 2.0 中。
与