我正在编写一个查询来从表A中获取记录,该查询满足了表B中记录的条件。例如:
表A是:
Name Profession City
John Engineer Palo Alto
Jack Doctor SF
表B是:
Profession City NewJobOffer
Engineer SF Yes
我有兴趣获得表c:
Name Profession City NewJobOffer
Jack Engineer SF Yes
我可以通过两种方式使用where子句或join查询来做到这一点,哪一种更快,为什么在spark sql中呢?
在where子句中比较列添加选择那些记录或联接列本身,哪个更好?
最佳答案
最好在WHERE子句中提供过滤器。这两个表达式不相等。
在JOIN子句中提供过滤时,将检索两个数据源,然后在指定条件下将其合并。由于联接是首先通过改组(在执行程序之间重新分配)数据来完成的,因此您将要整理许多数据。
在WHERE子句中提供过滤器时,Spark可以识别它,并且您将过滤两个数据源,然后将其合并。这样,您将减少数据量。可能更重要的是,这种方式Spark也许还可以执行过滤器下推,在数据源级别过滤数据,这意味着更少的网络压力。
关于scala - Spark SQL中的where子句与join子句,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38901027/