【问题标题】:Explode Dataset column on many rows doesn't work in a loop许多行上的 Explode Dataset 列在循环中不起作用
【发布时间】:2019-09-07 14:36:17
【问题描述】:

我正在尝试在 Java Spark 作业中分解多行中的一列。 当我只对一列进行分解时,效果很好,但是如果我尝试在所有列上循环进行分解,它就不起作用了。

这是我的代码:

不起作用:

    for (String column : columns) {
        tableDS = tableDS .withColumn(column, explode(split(column(column), "\\|")));
    }

没有例外。它只返回没有要拆分的内容的唯一行(空列值)。

仅适用于给定列:

    for (String column : columns) {
        tableDS = tableDS .withColumn("column1", explode(split(column("column1"), "\\|")));
    }

你知道为什么它不起作用吗?

【问题讨论】:

  • 你应该解释一下它到底是如何不起作用的:错误、异常、什么都不做等等。
  • 没有例外。结果只是最后一行(只有没有要拆分的列内容的行)。
  • 问题已相应编辑
  • 我发现了问题所在。事实上,当explode 处理具有空值的列时,拆分将失败但不会抛出异常。所以空列的行将被丢弃。

标签: java apache-spark dataset explode


【解决方案1】:

我发现了问题所在。实际上,当explode 处理具有空值的列时,拆分将失败但不会引发异常。所以空列的行将被丢弃。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-03-22
    • 2019-06-04
    • 1970-01-01
    • 2012-02-06
    • 1970-01-01
    • 2021-06-01
    • 2018-01-10
    • 2022-01-15
    相关资源
    最近更新 更多