我有一个 Spark 作业,其最终输出是 Algebird 布隆过滤器,我需要在另一个 Spark 作业中重用此布隆过滤器。 有没有办法使用 Twitter Storehaus 将此布隆过滤器存储在 kv 存储(例如:redis)中,并在其他作业中检索它(反序列化为 algebird 布隆过滤器)?
最佳答案
如果您不打算对布隆过滤器进行并发修改,最好的方法是将布隆过滤器存储为分布式位集。将键空间视为数组分区的索引,并将值视为该索引的数组的一部分。然后你就可以用更少的 IO 进行读取和写入。这基本上需要您在 storehaus MergeableStore 级别重新实现 Bloom 算法。
如果能把这个放在仓库里就好了,但我们实际上还没有这么做。我们一直使用较小的布隆过滤器,不需要分布式。
关于scala - 使用 Storehaus 存储 algebird Bloom Filter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38639871/