【发布时间】: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