我有一个Spark作业,其最终输出是Algebird bloom过滤器,我需要在另一个Spark作业中重用这个bloom过滤器。 有没有办法使用Twitter Storehaus将这个bloom过滤器存储在kv商店(例如:redis)中并在另一个作业中检索它(反序列化为algebird bloom过滤器)?
答案 0 :(得分:2)
如果您不打算对bloomfilter进行并发修改,最好的方法是将bloomfilter存储为分布式bitset。将关键空间视为数组分区的索引,值是该索引的数组部分。然后,您可以用更少的IO进行读写操作。这要求您基本上在级别或storehaus MergeableStore上重新实现bloom算法。
在storehaus中有这个很好,但我们实际上并没有这样做。我们一直使用不需要分发的较小的bloomfilters。