【问题标题】:how to get Dataframe from list spark scala如何从列表火花scala中获取数据框
【发布时间】:2017-09-09 18:28:36
【问题描述】:

我有一个 RDD 列表。我已经迭代了 rdd 并且对于 rdd 的每个元素我都在做一些解析逻辑。最后我得到了

 val mRdd = nRdd.map {
      ele =>  //parsing logic, I have the below field
colum = Array[String]  // example ['id','name','dept']<br> 
c_type = Array[String]  // example ['Int','String','String']<br> 
value = ArrayBuffer[String] //   [1,lucy,it][2,denis,cs]<br>
}

如何获取mRdd中的数据框列表

我尝试了一个逻辑来创建数据框,在这种情况下我必须先 rdd。但我无法在 rdd 中创建 rdd。

我是火花新手。我正在使用 spark 1.6.3
请帮帮我

【问题讨论】:

  • 请显示初始输入。如果你有一个 RDD 列表,你可能做错了什么
  • 对于初学者来说,看起来你想要一个案例类Person(id, name, dept)

标签: scala apache-spark dataframe rdd


【解决方案1】:

为了将 RDD 转换为 Dataframe,您需要执行以下操作:

方法一 - 使用 createDaframe 函数:

val mRdd: Seq[DataFrame] = nRdd.map {ele =>
    val parsedRDD = ele //apply parse logic here

    val schema = StructType(Seq(
        StructField("id", IntegerType),
        StructField("name", StringType),
        StructField("dept", StringType)
    ))
    createDataframe(parsedRDD, schema)
}

在此处阅读有关此方法的更多信息:https://spark.apache.org/docs/latest/sql-programming-guide.html#programmatically-specifying-the-schema

方法 2 - 使用 toDF 隐式函数:

import sqlContext.implicits._
val mRdd: Seq[DataFrame] = nRdd.map {ele =>
    val parsedRDD = ele //apply parse logic here
    val columns = Seq("id", "name", "dept")
    parsedRDD.toDF(columns: _*)
}

【讨论】:

  • 在第一种方法中,我也有字段类型。如何为数据框中的每一列应用字段类型。?
  • 我已经修复了第一种使用模式而不是字段名称的方法。
  • 你不能在 rdd (nRdd) 中创建 parsedRDD
猜你喜欢
  • 1970-01-01
  • 2021-07-16
  • 2019-05-12
  • 2020-06-21
  • 2017-11-16
  • 1970-01-01
  • 2020-05-23
  • 2020-07-21
  • 1970-01-01
相关资源
最近更新 更多