bloomfilter使用pyspark过滤巨大的Dataframe

a1o7rhls  于 2021-05-26  发布在  Spark
关注(0)|答案(0)|浏览(474)

我使用的是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)

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题