Parquet学习与使用之BloomFilter的应用
创始人
2024-05-29 15:50:16
0

写在前面

最近在自己做自定义的OLAP系统,文件格式上用的是Parquet,但是发现Parquet各个API的示例代码很少。所以就打算把这个系列的文章写一下。

1. Parquet的Filter

Parquet的过滤支持两大类,一类是基于Footer中的元数据进行RowGroup级别的过滤;这种过滤能够实现减少IO的目的,它通过元数据里的信息直接可以实现跳过RowGroup的读取。
另一类是对每一行进行过滤,此类对于减少IO没有作用,只是代码优雅一些,不用把所有的数据都读到客户端代码里进行过滤。

2. Parquet对RowGroup的过滤的基本介绍

当前最新版本1.12.x 中支持3类:

  1. 字典 - 如果列的值域空间不大,则用字典(parquet能够自己识别是否使用字典作为一列的过滤器)
  2. statistics - 数值型的min/max
  3. bloomFilter - 如果列值域比较大,则不是相对分段聚合的,则无法用1-2.则考虑用bloomFilter(如果使用bloomFilter需要在写入时指定要使用bloomFilter的列)

3. Parquet 应用BloomFilter的示例代码

3.1 写入Parquet文件

并指定user_id列使用BloomFilter

        ParquetWriter parquetWriter = AvroParquetWriter.builder(path).withSchema(userFlowTraceSchema).withCompressionCodec(CompressionCodecName.GZIP).withBloomFilterEnabled("user_id", true).build();
 

3.2 读取Parquet文件

目前BloomFilter仅支持Eq和In操作;其他类型和自定义的操作都直接被返回了 BLOCK_MIGHT_MATCH(true)- 即不过滤
源码见:org.apache.parquet.filter2.bloomfilterlevel.BloomFilterImpl

读取文件,并使用BloomFilter的示例:

GroupReadSupport readSupport = new GroupReadSupport();
String targetUserId1 = "9639102999811";
String targetUserId2 = "9639102999711";
Filter bloomFilterIn = FilterCompat.get(FilterApi.in(FilterApi.binaryColumn("user_id"),Sets.newHashSet(Binary.fromString(targetUserId1),Binary.fromString(targetUserId2))));
ParquetReader reader = ParquetReader.builder(readSupport, path).withFilter(bloomFilterIn).build();

相关内容

热门资讯

浙商中证1000指数增强基金财... 浙商中证1000指数增强型证券投资基金2024年年报已发布。报告期内,该基金份额总额从87,654,...
浙商智多金稳健一年持有期基金财... 2025年3月29日,浙商基金管理有限公司发布了浙商智多金稳健一年持有期混合型证券投资基金2024年...
鹏扬中债0-3年政金债指数财报... 鹏扬中债0-3年政策性金融债指数证券投资基金于2025年3月29日发布2024年年报。报告期内,该基...
“算力泡沫论”再起 秦枭近年来,随着人工智能(AI)技术的爆发式增长,算力基础设施建设在全球范围内掀起了一股热潮。然而,...
全球首批OC证落地 无人驾驶... 本报记者 陈佳岚 广州报道近日,中国民航局分别向广东亿航通用航空有限公司(以下简称“亿航通航”)和合...
鹏扬中证同业存单AAA指数7天... 鹏扬中证同业存单AAA指数7天持有期证券投资基金2024年年报已发布,报告期内基金份额总额、净资产合...
鹏扬中证500质量成长ETF联... 鹏扬中证500质量成长ETF联接基金2024年年报已发布,各项关键数据变动值得投资者关注。报告期内,...
浙商智选领航三年持有期基金财报... 2025年3月29日,浙商基金管理有限公司发布了浙商智选领航三年持有期混合型证券投资基金2024年年...
胖子怎么练好胸肌和腹肌? 胖子怎么练好胸肌和腹肌?我是健身教练,想减肥最好做有氧运动,想什么跑步,跳绳,游泳,骑单车之类的••...
“不如就此相忘于尘世间” 是什... “不如就此相忘于尘世间” 是什么意思啊?相见不如怀念!既然不能相伴,就不如相忘于江湖尘世。就是说,对...
天龙八部2那个门派最厉害? 天龙八部2那个门派最厉害?都一样的,没有最厉害的,厉害的是花钱多的,只要石头高装备好,任何门派都是最...
长沙过贾谊宅中哪一句用曲笔含蓄... 长沙过贾谊宅中哪一句用曲笔含蓄的表达了诗人内心的抑郁沧愤之情?长沙过贾谊宅中含蓄的表达了诗人内心的抑...
仓鼠逃跑了怎么办!急死了! 仓鼠逃跑了怎么办!急死了!仓鼠逃跑不会掉进厕所,你在床底下、沙发底下、桌子底下、墙角、洗衣机地下、菜...
全国有多少人叫李昊白 全国有多少人叫李昊白这个没有确切的数字,只能讲大约多个
火力2里面马凯那招1A的使悠悠... 火力2里面马凯那招1A的使悠悠球在线圈内水平180度翻转的招叫什么?如何玩?在线等!咋玩不知道告诉你...
浙商智选价值混合财报解读:份额... 2025年3月29日,浙商基金管理有限公司发布了浙商智选价值混合型证券投资基金2024年年度报告。报...
鹏扬中债3-5年国开债指数财报... 鹏扬中债3-5年国开债指数基金2024年年报已发布,各项关键数据变动显著,值得投资者深入剖析。报告期...
新凯来火爆出圈 中国半导体设... 转自:中国经营网本报记者 李玉洋 上海报道国内半导体设备行业或将迎来DeepSeek时刻。近日,在2...
“二代接班”首年巨亏79亿元 ... 本报记者 李哲 北京报道一年前,天齐锂业(002466.SZ)创始人蒋卫平将“交接棒”交到女儿蒋安琪...
成都人口逼近北京 “第三城”... 本报记者 庄灵辉 卢志坤 北京报道各地2024年人口数据相继出炉。日前,成都市统计局发布的数据显示,...