将Array [(Any,(Any,Any))]转换为2列的数据框

时间:2018-06-22 07:12:08

标签: apache-spark apache-spark-sql

我有一个类型为 01139290201001 to 0113929 for integer only rows and like this for the others 01139ÅÊ03003 to 0113903 的数组,我想将其转换为火花Array[(Any, (Any, Any))],以便第一个值在第一列中,而元组在第二列中。

2 个答案:

答案 0 :(得分:1)

首先,DataFrame对象具有强大的架构-您可以将RDDSeq隐式转换为DataFrame,但这将强大的架构附加到您的收藏中。由于Any类型只是说出我不知道我的类型的一种方式,因此在将其设为{{ 1}}。

假设您将所有内容都转换为DataFrame

String

给予

import spark.implicits._
val df  = Array.empty[(Any, (Any, Any))]
  .map{case (first, (second, third)) => 
       (first.toString, (second.toString, third.toString))
  }.toSeq.toDF

df.printSchema

答案 1 :(得分:0)

val arr: Array[(Int, (Int, Int))] = Array((1,(2,3)), (4,(5,6)))
spark.createDataFrame(arr).show()

哪个数据框为:

+---+-----+
| _1|   _2|
+---+-----+
|  1|[2,3]|
|  4|[5,6]|
+---+-----+

或者您可以将列信息自定义为:

spark.createDataFrame(arr, schema:StructType)

我希望这会对您有所帮助。