【发布时间】:2020-10-28 14:48:07
【问题描述】:
我想从下面的数据框中以Array[String] 的形式返回child
root
|-- parent: string (nullable = false)
|-- child: array (nullable = true)
| |-- element: string (containsNull = true)
我目前正在这样做,它确实适用于更少的数据
df.collect().flatMap(x => x.getAs[Seq[String]]("child")).mkString(",")
但是有很多数据,并且 spark 驱动程序正在运行 Out Of Memory,因为已知 collect() 会这样做。
从上述数据帧返回字符串数组的有效方法是什么?
【问题讨论】:
-
为什么需要用驱动收集数组?,可以在不收集和销毁驱动的情况下对dataframe做flatmap
-
只这样做
cSNHdf.flatMap(x => x.getAs[Seq[String]]("childsn"))不起作用@EmiCareOfCell44
标签: scala apache-spark apache-spark-sql