Spark数据集何时使用Except vs Left Anti Join

Posted

技术标签:

【中文标题】Spark数据集何时使用Except vs Left Anti Join【英文标题】:Spark Dataset when to use Except vs Left Anti Join 【发布时间】:2019-02-24 01:05:46 【问题描述】:

我想知道调用 except (https://spark.apache.org/docs/2.1.0/api/java/org/apache/spark/sql/Dataset.html#except(org.apache.spark.sql.Dataset) 和使用左反连接之间是否存在性能差异。到目前为止,我能看到的唯一区别是使用左反连接,两个数据集可以有不同列。

【问题讨论】:

BTW 答案中的任何值? 你能考虑接受这个答案吗? 【参考方案1】:

你的标题和解释不同。

但是,如果您具有相同的结构,则可以使用这两种方法来查找丢失的数据。

除了

是一个特定的实现,它强制执行相同的结构并且是一个减法运算,而

左反连接

允许使用不同的结构,但可以给出相同的结果。

用例不同:1) Left Anti Join 可以应用于与丢失数据有关的许多情况 - 没有订单的客户(尚未),数据库中的孤儿。 2)除了减去东西,例如机器学习将数据拆分为测试集和训练集。

性能不应成为真正的交易破坏者,因为它们通常是不同的用例,因此难以比较。除了将涉及相同的数据源,而 LAJ 将涉及不同的数据源。

【讨论】:

以上是关于Spark数据集何时使用Except vs Left Anti Join的主要内容,如果未能解决你的问题,请参考以下文章

Spark Dataframe 除了方法问题

Apache Spark 转换:groupByKey vs reduceByKey vs aggregateByKey

Spark Streaming + Kafka vs Just Kafka

Spark vs Hadoop vs Storm

Spark HiveContext vs HbaseContext?

转-Spark编程指南