我试图在Java Spark Job上爆炸多行中的一列。 当我仅对一列进行爆炸时,效果很好,但是如果我尝试对所有列进行循环以进行爆炸,则它不起作用。
不起作用:
for (String column : columns) {
tableDS = tableDS .withColumn(column, explode(split(column(column), "\\|")));
}
没有例外。它仅返回没有内容要拆分的唯一行(空列值)。
仅在给定的列上有效:
for (String column : columns) {
tableDS = tableDS .withColumn("column1", explode(split(column("column1"), "\\|")));
}
您知道为什么它不起作用吗?
答案 0 :(得分:0)
我发现了问题所在。实际上,当爆炸处理具有空值的列时,拆分将失败,但不会引发任何异常。因此具有空列的行将被丢弃。