爆炸阵列<阵列>的数据帧从JSON阶创建
问题描述:
我有JSON数据等:爆炸阵列<阵列<string>>的数据帧从JSON阶创建
{
"resultid": "Success",
"userId": "abc",
"cardtype": "ag",
"computescore": [{
"values": ["654", "655", "666"]
}, {
"values": ["754", "755", "777"]
}]
}
scala> val a = input.select("computescore.values")
a: org.apache.spark.sql.DataFrame = [values: array<array<string>>]
scala> a.collect.foreach(println)
[WrappedArray(WrappedArray(654, 655, 666), WrappedArray(754, 755, 777))]
我想从这个实现的是数据帧具有多个行和例如多列
a1 a2 a3
654 655 666
754 755 777
答
做这个
val input = sqlContext.jsonFile("D:/test.json")
val a = input.select("computescore.values")
val b=a.explode("values","mvnew"){test: WrappedArray[WrappedArray[String]] => test.asInstanceOf[WrappedArray[WrappedArray[String]]]}
val c=b.select("mvnew")
val d=c.map {case Row(col2: WrappedArray[String]) => (col2(0), col2(1), col2(2))}.toDF("Col2", "Col3", "Col4")
达标
有没有更好的方法来做到这一点