Parquet介绍
Apache Parquet是Hadoop生态系统圈中一种新型的列式存储格式,可以兼容Hadoop生态圈中大多数计算框架(Hadoop,Spark等),被多种查询引擎(Hive,Impala,Drill等),并且与语言无关.Parquet是面向分析性业务的列式存储格式,由Twriter和Cloudera合作开发,2015年5月从Apache的孵化器里毕业称为Apache的顶级项目.参考资料 Parquet。 Avro is a row-based storage format for Hadoop. Parquet is a column-based storage format for Hadoop.
列式存储
列式存储的优势:
- 可以跳过不符合条件的数据,只读取需要的数据,降低IO数据
- 压缩编码可以降低磁盘的存储空间.同一列数据类型是一样的,可以使用更有效的压缩编码,(例如Run Length Encoding和Delta Encoding)进一步节约存储空间。
- 只读取需要的列,支持向量运算,能够获取更好的扫描性能
项目组成
Parquet项目由以下几个子项目组成
- Parquet-format
项目由java实现,定义了所有Parquet元数据对象,Parquet的元数据使用Apache Thrift进行序列化并存储在Parquet文件的尾部,该模块实现了读写Parquet文件的功能,并且提供了一些和其他组件适配的工具
- Parquet-compatibility
包含不同编程语言之间(JAVA和C/C++)读写文件的测试代码
- Parquet-cpp
用于读写Parquet文件的C++库