如何从嵌套的JSON中创建数据框?

时间:2016-07-18 21:10:50

标签: scala apache-spark

所以我的初始架构看起来像这样:

root  
|-- database: String  
|-- table: String  
|-- data: struct (nullable = true)  
|    |-- element1: Int  
|    |-- element2: Char

show()结果有一个与[null,2,3]等丑陋的数据列

我想要做的是将数据结构化到它自己的数据框中,这样我就可以将嵌套的json数据分布在列中,但是类似于:

当我使用val dfNew = df.select("data")代替模式show()等指定的多个列时,

(element1, element2)才真正获得相同的总列数。

有办法做到这一点吗?

1 个答案:

答案 0 :(得分:2)

喜欢这个吗?

case class Data(element1: Int, element2: String)

val df = sqlContext.createDataFrame(sc.parallelize(Array(
        (1, Data(12312, "test"))))).toDF("i", "data")

df.select(col("data.element1"), col("data.element2"))

还是这个?

df.select(col("data.*"))