我最近在Scala Spark项目中遇到了这个运算符:"<=>"。我找不到任何文档。有谁知道它是如何工作的,或者知道一些文档?
我相信这与平等操作有关。
谢谢
观察结果1 (2/12/2020) |火花 2.3.2我做了一些实验,并注意到使用"<=>"对位于同一位置的数据执行联接会导致随机播放,而"=="则不会。
查看"Spark SQL 编程指南上支持的 Hive 功能"部分,您将在 Spark 支持的 Hive 运算符列表中找到它。
以下是它的作用:
- 对于非空操作数,返回与 EQUAL(=) 运算符相同的结果
然而:
-
如果两者都为空,则返回 TRUE
-
如果其中一个为 NULL 则返回 FALSE
这在连接条件中是否有效. 我使用了它,但 Spark 抛出了一个错误
spark.sql('''
select tp1.* from tp1 left join tp2 where tp1.user_id_num <=> tp2.user_id_num''').show()
我收到的错误
org.apache.spark.sql.AnalysisException: Detected implicit cartesian product for LEFT OUTER join between logical plans