如何从 Array[Array[Int]] 列 DataFrame 中提取子数组
How to extract subArray from Array[Array[Int]] column 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]|
+---------------------------+
感谢您的帮助
你可以爆炸:
import org.apache.spark.sql.functions.{col, explode}
df.select(explode(col("array")))
我有一个这样的数据框:
+---------------------------------------------------------------------+
|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]|
+---------------------------+
感谢您的帮助
你可以爆炸:
import org.apache.spark.sql.functions.{col, explode}
df.select(explode(col("array")))