scala - 使用 Storehaus 存储 algebird Bloom Filter

标签 scala apache-spark redis spark-streaming scalding

我有一个 Spark 作业,其最终输出是 Algebird 布隆过滤器,我需要在另一个 Spark 作业中重用此布隆过滤器。 有没有办法使用 Twitter Storehaus 将此布隆过滤器存储在 kv 存储(例如:redis)中,并在其他作业中检索它(反序列化为 algebird 布隆过滤器)?

最佳答案

如果您不打算对布隆过滤器进行并发修改,最好的方法是将布隆过滤器存储为分布式位集。将键空间视为数组分区的索引,并将值视为该索引的数组的一部分。然后你就可以用更少的 IO 进行读取和写入。这基本上需要您在 storehaus MergeableStore 级别重新实现 Bloom 算法。

如果能把这个放在仓库里就好了,但我们实际上还没有这么做。我们一直使用较小的布隆过滤器,不需要分布式。

关于scala - 使用 Storehaus 存储 algebird Bloom Filter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38639871/

相关文章:

scala - 如何在spark/scala中将excel数据读入数据框

即使值存在,redis get 也会返回 null

ruby-on-rails - Rails 5 安全操作电缆与 redis

Scala:使用泛型类型参数声明方法

java - 如何正确管理 Elastic Java Rest Client 超时

scala - 如何创建一个估计器来在拟合初始数据集后训练新样本?

java - 更改用户对象或 java 对象并影响 Redis 缓存数据

scala - 禁止在 Scala 中使用命名参数

r - 将 sparklyr 连接到远程 spark 连接

scala - 使用spark解析NiFi数据包