Parquet

Version

Hive 0.10、0.11 和 0.12 中的插件支持 Parquet,而 Hive 0.13 和更高版本中本机支持。

Introduction

Parquet(http://parquet.io/)是适用于 Hadoop 的整个生态系统范围的列格式。阅读实木复合地板使 Dremel 变得简单可很好地了解该格式,而 Parquet 项目的格式的深入描述包括动机和图表。在撰写本文时,Parquet 支持以下引擎和数据描述语言:

Engines

  • Apache Hive

  • Apache Drill

  • Cloudera Impala

  • Apache Crunch

  • Apache Pig

  • Cascading

  • Apache Spark

Data description

  • Apache Avro

  • Apache Thrift

  • Google 协议缓冲区

有关 Parquet 引擎和数据描述支持的最新信息,请访问Parquet-MR 项目功能矩阵

Parquet Motivation

我们创建 Parquet 是为了使 Hadoop 生态系统中的任何项目都可以使用压缩的,高效的列式数据表示形式。

Parquet 是从头开始构建的,考虑到了复杂的嵌套数据结构,并使用了 Dremel 论文中描述的记录粉碎和组装算法。我们相信这种方法优于嵌套名称空间的简单扁平化。

构建 Parquet 是为了支持非常有效的压缩和编码方案。多个项目已经证明了对数据应用正确的压缩和编码方案会对性能产生影响。 Parquet 允许在每个列的级别上指定压缩方案,并且经过验证,可以在发明和实现时添加更多编码。

木地板是任何人都可以使用的。 Hadoop 生态系统具有丰富的数据处理框架,因此我们对玩收藏夹不感兴趣。我们认为,高效,实施良好的柱状存储基板应适用于所有框架,而无需花费大量且难以构建依赖关系。

原生实木复合地板支持

配置单元 0.10、0.11 和 0.12

要将 Parquet 与 Hive 0.10-0.12 一起使用,您必须download来自 Parquet 项目的 Parquet Hive 软件包。您要在 Maven Central 中使用parquet-hive-bundle jar

Hive 0.13

添加了本机 Parquet 支持(HIVE-5783)。请注意,此版本不支持所有 Parquet 数据类型(请参见下面的版本和限制)。

HiveQL Syntax

CREATE TABLE语句可以使用取决于 Hive 版本的语法来指定 Parquet 存储格式。

配置单元 0.10-0.12

CREATE TABLE parquet_test (
 id int,
 str string,
 mp MAP<STRING,STRING>,
 lst ARRAY<STRING>,
 strct STRUCT<A:STRING,B:STRING>) 
PARTITIONED BY (part string)
ROW FORMAT SERDE 'parquet.hive.serde.ParquetHiveSerDe'
 STORED AS
 INPUTFORMAT 'parquet.hive.DeprecatedParquetInputFormat'
 OUTPUTFORMAT 'parquet.hive.DeprecatedParquetOutputFormat';

Hive 0.13 及更高版本

CREATE TABLE parquet_test (
 id int,
 str string,
 mp MAP<STRING,STRING>,
 lst ARRAY<STRING>,
 strct STRUCT<A:STRING,B:STRING>) 
PARTITIONED BY (part string)
STORED AS PARQUET;

版本和限制

Hive 0.13.0

添加了对创建表 AS SELECT(CTAS-HIVE-6375)的支持。

Hive 0.14.0

增加了对时间戳(HIVE-6394),十进制(HIVE-6367)以及 char 和 varchar(HIVE-7735)数据类型的支持。还添加了对使用标志parquet.column.index.access(HIVE-6938)进行列重命名的支持。 Parquet 列名称以前是区分大小写的(查询必须使用与 metastore 中的内容完全匹配的列大小写),但变得不区分大小写(HIVE-7554)。

Hive 1.1.0

支持增加了对二进制数据类型(HIVE-7073)。

Hive 1.2.0

添加了对其余 Parquet 数据类型的支持(HIVE-6384)。

Resources