`
Belinda407
  • 浏览: 34236 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

Bloomfilter 持久化问题

 
阅读更多
问题描述:使用org.apache.hadoop.util.bloom.BloomFilter,将Hdfs文件夹中的所有文件内容添加到BloomFilter,然后将其持久化到Hdfs。
直接从主函数运行正常
从web程序调用,发现文件总是0.0b

错误原因:
FSDataOutputStream输出流未flush,未close

正确代码:
public static boolean bloomFilterInit(Configuration config, int numbers,
String fromuri, String touri) throws IOException {
boolean isInit = false;
int vectorSize = HashUtil.getOptimalBloomFilterSize(numbers,
HashUtil.FALSEPOSRATE);
int hashCount = HashUtil.getOptimalK(numbers, vectorSize);
FileSystem fileSystem = FileSystem.get(config);
BloomFilter bf = readHdfsToBloom2(vectorSize, hashCount, fileSystem,
fromuri);
if (bf != null) {
FSDataOutputStream strm = fileSystem.create(new Path(touri));
bf.write(strm);
strm.flush();
strm.close();
isInit = true;
}
bf = null;
return isInit;
}
分享到:
评论

相关推荐

    bloomclj:Clojure中的Bloom Filter实现

    此外,bloomclj支持将Bloom Filter序列化和反序列化,以便在不同程序之间共享或持久化存储。 使用bloomclj库的步骤通常包括以下几个部分: 1. 导入库:首先需要在Clojure代码中导入bloomclj库,例如: ```clojure ...

    布隆过滤器BloomFilters的一个简单Java库

    5. **序列化与反序列化**:布隆过滤器的数据可以被序列化存储,便于持久化和在网络间传输。 在实际应用中,布隆过滤器常用于: - **缓存**:快速检查一个元素是否已经在缓存中,减少不必要的数据库查询。 - **垃圾...

    scrapy使用布隆过滤器实现增量爬取

    之前看了很多关于scrapy-redis使用bloomfilter进行持久化存储进行url去重的例子,可是发现没有一种适用于scrapy,于是萌生了基于现有scrapy-redis-bloomfilter库进行改写的想法。 经过修改,此脚本可以做一个初步的...

    RedisBloom v2.2.18

    Redis 是一个高性能的键值数据库,广泛用于缓存、消息队列和数据持久化等多个场景。它支持多种数据结构,如字符串、哈希、列表、集合等,但默认并不提供布隆过滤器。布隆过滤器是一种空间效率极高的概率型数据结构,...

    DB leveldb实现解析

    当写入数据时,首先写入Memtable,达到一定大小后,将Memtable中的数据持久化到SSTable,并删除在Memtable中的数据。SSTables是有序的,通过合并较小的SSTable形成更大的文件,进一步减少随机读取,提升读取效率。 ...

    Redis 40 道面试题及答案.docx

    如果你说还玩过Redis Module,像BloomFilter、RedisSearch、Redis-ML,面试官的眼睛就开始发亮了。 使用Redis有哪些好处? 1. 速度快,因为数据存在内存中,类似于HashMap,HashMap的优势就是查找和操作的时间...

    redis高可用core

    可以利用`BGSAVE`命令生成RDB文件,或者启用AOF持久化记录每次写操作。 3. **监控与告警**:实时监控Redis集群的状态,设置合理的告警阈值,以便在出现问题时及时处理。 4. **资源优化**:根据业务需求合理配置...

    100讲带你实战基于Redis的高并发.zip

    1. **066_案例实战:网站重复垃圾数据的快速去重和过滤** - 这一章节可能涉及Redis的数据结构如Set或Sorted Set,通过它们的唯一性特性进行数据去重,以及可能用到的布隆过滤器(Bloom Filter)进行高效过滤。...

    10个常见的Redis面试"刁难"问题1

    此外,Redis Module扩展了更多功能,如BloomFilter、RedisSearch和Redis-ML。 2. 如何使用Redis实现分布式锁? 分布式锁通常使用`SETNX`命令来尝试获取锁,并结合`EXPIRE`设置超时以防止锁未被释放。但这种方法...

    Redis 45 道面试题及答案.docx

    在实际应用中,Redis还可以配合其他模块,如HyperLogLog、Geo、Pub/Sub,甚至一些第三方模块如BloomFilter、RedisSearch、Redis-ML等,提供更多的功能和服务。 总结来说,Redis作为一个强大的键值数据库,以其高速...

    Redis面试题 42道.pdf

    高级用户还会涉及Bloom Filter、RedisSearch和Redis-ML等模块。 3. **性能优势**:Redis运行在内存中,读写速度极快,接近O(1)的时间复杂度。同时,它支持事务,保证原子性操作,确保数据一致性。此外,Redis还支持...

    17-Redis面试题(50题).pdf

    Redis模块进一步扩展了其功能,如BloomFilter、RedisSearch和Redis-ML,使得Redis成为一个功能强大的数据处理平台。 使用Redis的好处主要包括: 1. 高速访问:由于数据驻留在内存中,查询和操作速度极快。 2. 多种...

    pybloompython

    4. 序列化与反序列化:PyBloom支持将布隆过滤器序列化成字节,以便于持久化存储或在网络上传输,然后再反序列化回布隆过滤器对象。 ```python bf_bytes = bf.tobytes() new_bf = BloomFilter.frombytes(bf_bytes) ``...

    Java面试题比较全的知识点总结.docx

    Redis模块的扩展如BloomFilter、RedisSearch和Redis-ML进一步增强了其功能。 Redis的特点: 1. **多种数据结构**:支持string、list、hash、set、sorted set、hyperloglog等多种数据结构,方便存储各种类型的数据。...

    Redis面试题 42道1

    此外,Redis 还支持HyperLogLog、Geo、Pub/Sub等高级数据结构,以及通过Redis Modules扩展的BloomFilter、RedisSearch、Redis-ML等功能。 Redis 的优势在于: 1. 速度极快:由于数据存储在内存中,Redis的读取速度...

    cpp-详细且纯粹的leveldb源码注解

    它提供了简单的接口,用于在本地磁盘上持久化键值对数据。由于其高效的数据结构和算法设计,`leveldb`在读写性能上表现出色,被广泛应用于数据库、缓存、日志存储等领域。 **数据结构** 1. **SSTable**:`leveldb`...

    redis缓存安装包和教案

    使用布隆过滤器(Bloom Filter)减少无效查询,优化内存使用;以及在处理大量数据时,考虑使用管道(Pipeline)批量操作以减少网络通信开销。 综上所述,Redis是一个功能强大的键值存储系统,其持久化、缓存、数据...

Global site tag (gtag.js) - Google Analytics