我是spark的新手,但对spark性能调优非常好奇。我有一个需要更新列(比如列)的大Dataframe A
)使用另一列的值(例如列 B
)如果当前列值为null或空,则从同一Dataframe。我的做法是:
val cleanDF = originDF.withColumn("A", when(col("A").isNull || col("A") == "", col("B")))
以下是我的问题:
有没有更好的方法 null
检查?在java世界中,有apache公共库提供api来检查字符串 isBlank
. spark有类似的产品吗?
手术室的性能影响如何( ||
)在大Dataframe上验证的条件
是否有更好的选项可以以更好的性能运行此列更新任务?我知道 UPDATE
在spark中可能会很贵,所以只是想知道好的做法。
1条答案
按热度按时间46scxncf1#
1) 您可以使用commons lib。将--jars“公共jar文件的路径”添加到sparkshell或submit
2) 您正在对数据集执行一次传递(加上检查colb并将其复制到cola的固定时间),它应该是o(n)
3) 你的可乐(可能,如果空白)替换为colb从同一行,这是不贵的。我无法确认,但我假设一行的所有数据都驻留在同一个节点中。