我试图在Spark中重新创建一个Left Outer Join。连接也会在右表中排除NULL值。这背后的想法是:左表提供新记录。我需要检查是否有任何新数据并将选择加载到新的数据帧中。
SQL作为参考(这可行):
SELECT
primary_key,
attribute_1,
attribute_2
FROM
left_table l
LEFT JOIN right_table r ON l.primary_key = r.foreign_key
WHERE r.foreign_key IS NULL
Java Dataframe Join
Dataset<Row> joined = left_table.alias("l").join(right_table.alias("r"), left_table.col("primary_key").equalTo(right_table.col("foreign_key")), "left_outer");
结果
+--------------------+-----------+-------+-----+
| primary_key|foreign_key|attr_1 |attr2|
+--------------------+-----------+-------+-----+
|c6d2f6791d7e6127d...| null| null| null|
|485e86b2b77ebd787...| null| null| null|
|8c7e1ac10cb1650e5...| null| null| null|
Join本身有效但我仍然得到空值。我尝试的下一件事是添加一个where子句(.where(right_table.col(“foreign_key”)。isNull());)。这只留给我一个空的数据帧。
如何插入where子句/过滤器来排除空值?