内连接滴记录结果

避免了记录在执行一个内连接。

写的siddharth.panchal

去年发表在:2022年5月23日

问题

你执行内连接,但是结果加入表丢失数据。

例如,假设您有两个表,订单模型

% python df_orders =火花。createDataFrame(((“日产”,Altima,双门车2.5年代车),(“日产”,Altima, 4-door 3.5 SE轿车),(“日产”,Altima,”)(“日产”,Altima, None)],[“公司”,“模型”,“信息”)

样品订单表。

% python df_models = spark.createDataFrame(((“日产”,Altima,”)(“日产”,Altima,双门车2.5年代车),(“日产”,Altima,双门车3.5 SE轿车),(“日产”,Altima, 4-door 2.5年代轿车),(“日产”,Altima, 4-door 3.5 SE轿车),(“日产”,Altima, 4-door 3.5 SL轿车),(“日产”,Altima, 4-door混合动力轿车),(“日产”,Altima, None)],[“公司”,“模型”,“信息”)

范例模型表格。

你尝试直接连接两个表。

% python df_orders.createOrReplaceTempView(“订单”)df_models.createOrReplaceTempView(“模型”)SQL复制到clipboardCopy SELECT *魔法从订单一个魔法内连接模型b魔法上。公司= b。魔法和一个公司。模型= b。魔法和一个模型。信息= b.Info

结果加入表只包括三四个记录的订单表。的记录值一列没有出现在结果中。

一个默认的内连接的结果。Null值下降。

导致

Apache火花不考虑当执行连结操作值。

如果你试图加入表和一些列包含值,记录将不被包括在结果加入表。

解决方案

如果你的源表值,您应该使用火花安全操作符(< = >)。

当你使用< = >引发过程值(而不是把他们)在执行连接。

例如,如果我们修改示例代码< = >,由此产生的表不下降值。

%的sql SELECT *魔法从订单一个魔法内连接模型b魔法上。公司= b。魔法和一个公司。模型= b。魔法和一个模型。信息< = > b.Info

空安全内连接的结果。Null值是可见的。

例如笔记本电脑

检查内连接滴null值的例子笔记本

这篇文章有用吗?