Presto读取Parquet文件的流程

本文深入探讨了Presto处理ORC和Parquet格式的Hive表的优化机制,特别是其在读取Parquet文件时的独特方式。不同于传统的MapReduce,Presto采用自定义的读取和转换机制,支持多worker并发读取和列裁剪等优化,避免了数据读取成为性能瓶颈。文章详细阐述了Presto读取Parquet文件的流程,从ParquetPageSource到Page的构建,通过ParquetBlockLoader和各种ColumnReader将Parquet原始数据转换为Presto的数据结构Page,实现了高效的数据处理。

   一.  概论

        Presto对ORC和Parquet格式存储的Hive表的处理很为友好,Presto访问这两种格式表时进行了大量的优化,以致得到很为优越的性能。 Presto在读取文件上和Spark等其他数据处理引擎组件最为与众不同是Presto读取ORC/Parquet格式表并没有采用传统的MR方式,而是采用了自己读取和切分和转换文件的方式。这样很容易实现自己控制多worker多并发读取,多pipeline同时加工,也能很容易进行列裁剪分区裁剪等读取优化,可以有效避免读取数据成为数据处理的性能瓶颈。

      本文主要介绍了在Presto读取Parquet文件的流程以及介绍在Presto中是如何一步步将Parquet文件组装成自己数据加工处理的数据结构Page的。

二.  Presto读取Parquet文件的总体流程

三. Presto处理Parquet文件的代码走读

ParquetPageSource
   getNextPage
       blocks[fieldId] = new LazyBlock(batchSize, new ParquetBlockLoader(field.get()));
           ParquetBlockLoader::load
               parquetReader.readBlock(field)
        &nb

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值