如何从Array [Array [Int]]列DataFrame中提取subArray

时间:2016-12-13 14:01:01

标签: scala apache-spark spark-dataframe

我有一个像这样的数据帧:

+---------------------------------------------------------------------+
|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]|
+---------------------------+

感谢您的帮助

1 个答案:

答案 0 :(得分:4)

你可以爆炸:

import org.apache.spark.sql.functions.{col, explode}
df.select(explode(col("array")))