我使用的是spark2.4.3,我需要使用其他的大表来过滤一个大表。
在尝试使用时,我无法避免排序操作 WHERE IN
或者 INNER JOIN
. 这能避免吗?
因为我对假阳性没问题,也许布鲁姆过滤器是另一种选择。
我看到scala有一个内置的dataframe函数(https://spark.apache.org/docs/2.4.3/api/scala/index.html#org.apache.spark.sql.dataframestatfunctions)但pyspark中没有相应的函数。
有没有办法把这个叫做Pypark?
我没有分享真正的查询,但这里有一个非常类似的用例。考虑一下这两者 items
以及 item_tags
是巨大的。
WITH items_tag_a AS (
SELECT id
FROM items
WHERE id IN (SELECT item_id FROM item_tags WHERE tag = 'a')
),
items_tag_b AS (
SELECT id
FROM items
WHERE id IN (SELECT item_id FROM item_tags WHERE tag = 'b')
),
items_tag_c AS (
SELECT id
FROM items
WHERE id IN (SELECT item_id FROM item_tags WHERE tag = 'c')
)
SELECT id
FROM item_tag_a
WHERE id IN (SELECT id FROM item_tag_b)
AND id IN (SELECT id FROM item_tag_c)
暂无答案!
目前还没有任何答案,快来回答吧!