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

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

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

  1. root
  2. |-- parent: string (nullable = false)
  3. |-- child: array (nullable = true)
  4. | |-- element: string (containsNull = true)

我目前正在做这项工作,它的工作数据较少

  1. df.collect().flatMap(x => x.getAs[Seq[String]]("child")).mkString(",")

但有很多数据和Spark驱动程序正在运行 Out Of Memory 作为 collect() 是众所周知的。
从上面的Dataframe返回字符串数组的有效方法是什么?

4sup72z8

4sup72z81#

平面图如下:

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

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

  1. /*
  2. +-------+
  3. | value|
  4. +-------+
  5. |child_1|
  6. |child_2|
  7. +-------+
  8. * /

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

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

它给出:

  1. /*
  2. +---------------+
  3. | value|
  4. +---------------+
  5. |child_1,child_2|
  6. +---------------+
  7. * /
展开查看全部

相关问题