我有一个像这样的数据帧:
+---------------------------------------------------------------------+
|ARRAY |
+---------------------------------------------------------------------+
|[WrappedArray(1, 2, 3), WrappedArray(4, 5, 6), WrappedArray(7, 8, 9)]|
+---------------------------------------------------------------------+
我使用此代码创建它:
case class MySchema(arr: Array[Array[Int]])
val df = sc.parallelize(Seq(
Array(Array(1,2,3),
Array(4,5,6),
Array(7,8,9))))
.map(x => MySchema(x))
.toDF("ARRAY")
我想得到这样的结果:
+-----------+
|ARRAY | |
+-----------+
|[1, 2, 3] |
|[4, 5, 6] |
|[7, 8, 9] |
+-----------+
你有什么想法吗?
我已经尝试调用udf在我的Array行上执行flatmap(x => x)但是得到的结果不正确:
+---------------------------+
|ARRAY |
+---------------------------+
|[1, 2, 3, 4, 5, 6, 7, 8, 9]|
+---------------------------+
感谢您的帮助
答案 0 :(得分:4)
你可以爆炸:
import org.apache.spark.sql.functions.{col, explode}
df.select(explode(col("array")))