【问题标题】:How to convert DataFrame to RDD in Scala?如何在 Scala 中将 DataFrame 转换为 RDD?
【发布时间】:2015-12-08 11:20:50
【问题描述】:

有人可以分享如何将dataframe 转换为RDD 吗?

【问题讨论】:

    标签: scala apache-spark apache-spark-sql spark-dataframe


    【解决方案1】:

    简单地说:

    val rows: RDD[Row] = df.rdd
    

    【讨论】:

    • 如果您得到 RDD 或 Row 的“类型未找到”,这可能会有所帮助:val rows: org.apache.spark.rdd.RDD[org.apache.spark.sql.Row] = df.rdd
    • 为了扩展 Boern 的答案,添加以下两个导入命令: import org.apache.spark.rdd.RDD import org.apache.spark.sql.Row
    • 这会改变保存数据的 Spark 内存中的任何内容,还是更轻松地创建一个指向相同数据的新对象?我希望它是两者中较轻的,但从源代码 cmets 不确定。
    【解决方案2】:

    如果要将行映射到不同的 RDD 元素,请使用 df.map(row => ...) 将数据帧转换为 RDD。例如

    df.map(row => (row(1), row(2)))
    

    给你一个配对的 RDD,其中 df 的第一列是键,df 的第二列是值。

    【讨论】:

      【解决方案3】:

      我只是在寻找我的答案并找到了这篇文章。

      Jean 的回答绝对正确,添加“df.rdd”将返回 RDD[Rows]。一旦我得到 RDD,我需要应用 split() 。为此,我们需要将 RDD[Row} 转换为 RDD[String]

      val opt=spark.sql("select tags from cvs").map(x=>x.toString()).rdd
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-03-05
        • 2017-06-13
        • 2018-11-08
        • 2017-05-13
        • 2016-04-13
        • 2017-10-30
        相关资源
        最近更新 更多