首页 理论教育 Parquet数据格式的基本概念

Parquet数据格式的基本概念

时间:2023-07-02 理论教育 版权反馈
【摘要】:Parquet是一种支持嵌套数据的列式存储格式。Parquet元数据使用Apache Thrift进行编码。Parquet-format项目包含创建Parquet文件的readers及writers所需的所有Thrift定义。上述第二种方式可以通过Kafka+Spark Streaming+Spark SQL方式取代。由此可见,Parquet格式数据在整个大数据分析过程中在数据管道中起着承上启下,数据格式转换的作用,处于数据管道的中间环节,其地位相当重要。

Parquet数据格式的基本概念

1.列式存储

列式存储指数据是按列存储的,每一列数据单独存放,列式存储以流的方式在列中存储所有的数据,主要适合批量数据处理和即席查询。

下面看一个行式存储及列式存储的示意图,如图4-1所示。

978-7-111-59197-9-Chapter04-1.jpg

图4-1 行式存储及列式存储示意图

a)行式存储 b)列式存储

图4-1中左侧的表格基于行式的存储,如表4-1所示。

4-1 行式存储

978-7-111-59197-9-Chapter04-2.jpg

图4-1 中右侧的表格基于列式的存储,如表4-2所示。

4-2 列式存储

978-7-111-59197-9-Chapter04-3.jpg

从图4-1可以看出,基于行式的存储,依次存储每一行的数据,一张表的数据存放在一起。但列式存储的数据是按照列存储的,每一列单独存放,数据即是索引。如数据查询时只访问查询涉及的列,大大降低了系统I/O,而且由于数据类型一致,方便压缩。(www.xing528.com)

Parquet是一种支持嵌套数据的列式存储格式。Parquet元数据使用Apache Thrift进行编码。Parquet-format项目包含创建Parquet文件的readers及writers所需的所有Thrift定义。Parquet为Hadoop生态系统中的任何项目提供可压缩的列式数据表达、Parquet使用“record shredding and assembly algorithm”(基于Dremel的论文算法来表示复杂的嵌套数据类型,通过列式压缩和编码技术降低了存储空间,提高了I/O效率

2.Parquet的3个核心组成部分

1)Storage Format(存储格式):定义了Parquet内部的数据类型和存储格式。

2)Object Model Converters(对象模型转换器):负责数据对象和数据类型之间的映射。这部分功能由parquet-mr项目来实现,主要完成外部对象模型与Parquet内部数据类型的映射,映射完成后Parquet会进行自己的Column Encoding,然后存储Parquet格式文件。

3)Object Models(对象模型):在Parquet中具有自己的Object Model定义的存储格式,例如,Avro具有自己的Object Model,但是Parquet在处理相关格式的数据时会使用自己的Object Model来完成具体数据的存储。Avro是Hadoop中的一个子项目是一个基于二进制数据传输高性能的中间件是一个数据序列化的系统Avro可以将数据结构或对象转化成便于存储或传输的格式适合远程或本地大规模数据的存储和交换

3.大数据分析技术栈中数据流水线处理的三种方式

业界对大数据分析技术栈的数据管道一般分为以下三种方式:

1)数据源→HDFS→MR/Hive/Spark(相当于ETL)→HDFS Parquet→Spark SQL/Impala→ResultService(可以放在DB中,也有可能被通过JDBC/ODBC来作为数据服务使用)。

2)数据源→实时更新数据到HBase/DB→导出为Parquet格式数据→Spark SQL/Impala→ResultService(可以放在DB中,也有可能被通过JDBC/ODBC来作为数据服务使用)。

上述第二种方式可以通过Kafka+Spark Streaming+Spark SQL(强烈建议采用Parquet的方式来存储数据)方式取代。业界最期待的数据管道方式为下述第三种方式:

3)数据源→Kafka→Spark Streaming→Parquet→Spark SQL(ML、GraphX等)→Par- quet→其它各种Data Mining等。

由此可见,Parquet格式数据在整个大数据分析过程中在数据管道中起着承上启下,数据格式转换的作用,处于数据管道的中间环节,其地位相当重要。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈