scala—从sparkDataframe返回array[string]的有效方法,无需使用collect()

jogvjijk  于 2021-05-19  发布在  Spark
关注(0)|答案(1)|浏览(614)

我想回来 child 作为一个 Array[String] 从下面的Dataframe

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返回字符串数组的有效方法是什么?

4sup72z8

4sup72z81#

平面图如下:

df.flatMap(x => x.getAs[Seq[String]]("childsn")).show()

将子项分解为一个新的字符串列:

/*
+-------+
|  value|
+-------+
|child_1|
|child_2|
+-------+

* /

如果需要创建另一列,子列之间用逗号分隔:

df.flatMap(x => Seq(x.getAs[Seq[String]]("childsn").mkString(","))).show()

它给出:

/*
+---------------+
|          value|
+---------------+
|child_1,child_2|
+---------------+

* /

相关问题