【问题标题】:pyspark : Convert DataFrame to RDD[string]pyspark : 将 DataFrame 转换为 RDD[string]
【发布时间】:2016-05-29 05:30:36
【问题描述】:

我想将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'

谢谢

【问题讨论】:

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


    【解决方案1】:

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

    data.map(list)
    

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

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

    【讨论】:

    • 感谢@zero323 的回答,我的学习曲线越来越好
    【解决方案2】:

    接受的答案是旧的。使用 Spark 2.0,您现在必须通过在语句中添加 .rdd 来明确声明您正在转换为 rdd。因此,相当于 Spark 1.0 中的这条语句:

    data.map(list)
    

    现在应该是:

    data.rdd.map(list)
    

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

    【讨论】:

      猜你喜欢
      • 2021-06-29
      • 2023-03-13
      • 2018-09-14
      • 1970-01-01
      • 1970-01-01
      • 2017-11-02
      • 2017-06-13
      • 2018-10-21
      • 1970-01-01
      相关资源
      最近更新 更多