本文为自己翻译的译文,原文地址:https://cwiki.apache.org/confluence/display/Hive/Parquet
Version
Parquet is supported by a plugin in Hive 0.10, 0.11, and 0.12 and natively in Hive 0.13 and later.
简介
Parquet (http://parquet.io/)是Hadoop的一种生态系统广阔的按列存储格式。 阅读Dremel made simple with Parquet 可以更好的了解这种格式,同时Parquet项目对格式包括初衷和图解进行了深入的描述。在撰写本文时,Parquet支持以下引擎和数据描述语言:
Engines
- Apache Hive
- Apache Drill
- Cloudera Impala
- Apache Crunch
- Apache Pig
- Cascading
- Apache Spark
Data description
- Apache Avro
- Apache Thrift
- Google Protocol Buffers
关于最新的Parquet 引擎和数据描述支持信息,请访问:Parquet-MR projects feature matrix.
Parquet Motivation
我们创建了Parquet,以使Hadoop生态系统中的任何项目都可以使用压缩的、有效的列式数据存储格式。
Parquet是用复杂的嵌套数据结构在头脑中建立起来的,并使用在Dremel论文中描述的记录分解和集合算法。我们相信这种方法优于简单的嵌套命名空间。
Parquet的构建是用来支持非常高效的压缩和编码方案的。多个项目已经证明了将正确的压缩和编码方案应用到数据的性能影响。Parquet允许在列级别上指定压缩方案,并且未来将允许在创建时添加更多的编码方式。
Parquet是任何人都可以使用的。Hadoop生态系统中有丰富的数据处理框架,我们不喜欢有所偏颇。我们认为,一个高效、实现良好的列式存储格式应该对所有框架都有用,而不需要花费大量的成本和难以建立依赖关系。
本地Parquet支持
Hive 0.10, 0.11, and 0.12
要使用Hive 0.10-0.12,你必须从Parquet项目中下载Parquet Hive 安装包。您需要Maven中的parquet-hive-bundle jar。
Hive 0.13
已经添加了本地Parquet支持(HIVE-5783). 请注意,并不是所有的Parquet数据类型都支持这个版本。(see Versions and Limitations below).
HiveQL 语法
CREATE TABLE语句可以指定带有语法的Parquet存储格式,这取决于Hive版本。
Hive 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 and later
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
为Create Table添加了支持,作为SELECT。(CTAS -- HIVE-6375).
Hive 0.14.0
支持时间戳(HIVE-6394)、decimal (HIVE-6367)、char和varchar (HIVE-7735)数据类型。也添加了使用 parquet.column.index.access
标记对列重名 (HIVE-6938)。 Parquet列名称以前是区分大小写的(查询必须使用与转移的准确匹配的列情况),但是现在不区分大小写。(HIVE-7554).
Hive 1.1.0
为二进制数据类型添加了支持。(HIVE-7073).
Hive 1.2.0
支持剩余的Parquet数据类型。(HIVE-6384).