如何用dataset分解spark java中的数组列

qybjjes1  于 2021-05-27  发布在  Spark
关注(0)|答案(1)|浏览(473)

我在spark java中有一个数据集:current:

  1. +--------------+--------------------+
  2. | x | YS. |
  3. +--------------+--------------------+
  4. |x1 | [Y1,Y2] |
  5. |x2 | [Y3] |

我要分解此数据集并将数组转换为单个条目,如“

  1. Desired:
  2. +--------------+--------------------+
  3. | x | YS.
  4. +--------------+--------------------+
  5. |x1 | Y1
  6. |X1 |. Y2
  7. |x2 | Y3

我从数据库中读取表并读取两列,但无法使用explode功能。

  1. DS = reader.option("table", "dummy").load()
  2. .select(X,YS).explode(??)

我应该如何使用explode并用java获得所需的数据集。

uhry853o

uhry853o1#

原则上,您需要选择一个新列(而不是 YS 列),其中新列的值将被分解 YS 列值。
从问题的代码开始,这将类似于:

  1. ds = reader.option("table", "dummy").load()
  2. ds = ds.select(ds.col("X"), explode(ds.col("YS")).as("Y"))

以下是api文档:https://spark.apache.org/docs/2.4.6/api/java/org/apache/spark/sql/functions.html#explode-org.apache.spark.sql.column列-

相关问题