我有下面的spark数据集/Dataframe。我必须通过找到列2和列3的绝对值之间的差异来创建一个新的列diff\u col
col_1 col_2 col_3
A 5 3
B null -2
C 2 null
D null null
E 3 1
F 4 -2
预期产量:
col_1 col_2 col_3 diff_col
A 5 3 2
B null -2 -2
C 2 null 2
D null null 0
E 3 1 2
F 4 -2 2
不知道如何在JavaSpark中实现这一点。在pyspark中,我们可以用lit(0)替换null,然后用col(col\u 2)-col(col\u 3)替换。有java spark等价物吗?
3条答案
按热度按时间5m1hhzi41#
您可以尝试使用fill方法创建另一个数据集,将指定列的所有空值替换为0(或任何其他数值)。然后继续计算差值。
hgqdbh6s2#
因为只有两列,所以可以使用coalese[1]和lit[2]。
然后将其添加为列
另一种解决办法是把你的头发包起来
Dataset
明确地DataFrameNaFunctions
[3] ,并使用fill
否则不接受javaapi。fill
将替换所有NULL
为相应类型的列提供值。1: https://spark.apache.org/docs/latest/api/java/org/apache/spark/sql/functions.html#coalesce-org.apache.spark.sql.column列-
2: https://spark.apache.org/docs/latest/api/java/org/apache/spark/sql/functions.html#lit-java.lang.object对象-
三:https://spark.apache.org/docs/latest/api/scala/org/apache/spark/sql/dataframenafunctions.html
wlp8pajw3#
使用
abs
,nvl
内部sql函数expr
功能。输出