所以我的初始架构看起来像这样:
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)
才真正获得相同的总列数。
有办法做到这一点吗?
答案 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.*"))