列数为空的Spark Dataframe连接

时间:2017-06-27 10:10:40

标签: java apache-spark join dataframe where-clause

我试图在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子句/过滤器来排除空值?

0 个答案:

没有答案