Impala 如何使用 Hadoop 文件格式

Impala 如何使用 Hadoop 文件格式

Impala 支持几种熟悉的 Apache Hadoop 中使用的文件格式。Impala 能够加载或查询其余 Hadoop 组件如 Pig 或 MapReduce 产生的数据文件,而且 Impala 产生的数据文件也能够被其余组件使用。下面的章节讨论 Impala 使用各类文件格式的步骤、限制和性能注意事项。 html

Impala 表使用的文件格式具备重要的性能意义。一些文件格式包括压缩支持,会影响到硬盘上数据的大小,所以,也影响反序列化数据时所需的 I/O 和 CPU 资源的数量。由于查询一般以移动和解压缩数据开始,所需的 I/O 和 CPU 资源是查询性能的限制因素。为了不处理过程当中这一部分潜在的冲突,数据一般进行压缩。经过压缩数据,更小的字节数从硬盘传输给内存。这减小了传输数据的时间,但应权衡考虑 CPU 解压缩内容的时间。 shell

Impala 能够查询 Hadoop 中最通用的文件编码和压缩编码(Impala can query files encoded with most of the popular file formats and compression codecs used in Hadoop)。Impala 能够建立并插入数据到部分而不是所有文件格式;对于 Impala 没法写入的文件格式,在 Hive 中建立这些表,在 impala-shell 中执行 INVALIDATE METADATA 语句,并经过 Impala 查询这些表。文件格式能够是结构化的,他们可能包含元数据和内置的压缩支持。支持的文件格式包括: 架构

Table 1. File Format Support in Impala
File Type Format Compression Codecs Impala Can CREATE? Impala Can INSERT?
Parquet Structured Snappy, GZIP; currently Snappy by default Yes. 支持:CREATE TABLE, INSERT, 查询
Text Unstructured LZO Yes. 不指定 STORED AS 子句的 CREATE TABLE 语句,默认的文件格式就是未压缩文本,使用 ASCII 0x01 字符进行分割(一般对应 Ctrl-A). 支持:CREATE TABLE, INSERT, 查询。若是使用 LZO 压缩,则必须在 Hive 中建立表和加载数据
Avro Structured Snappy, GZIP, deflate, BZIP2 No, create using Hive. 仅支持查询,在 Hive 中加载数据
RCFile Structured Snappy, GZIP, deflate, BZIP2 Yes. 仅支持查询,在 Hive 中加载数据
SequenceFile Structured Snappy, GZIP, deflate, BZIP2 Yes. 仅支持查询,在 Hive 中加载数据

Impala 支持下列压缩编解码器: app

  • Snappy. 因其在压缩比和解压速度间的有效平衡而推荐。Snappy 压缩很是快,而 GZIP 压缩比更高
  • GZIP. 指望达到最大压缩比(最少硬盘空间)时推荐
  • Deflate.
  • BZIP2.
  • LZO, 仅支持文本文件。Impala 能够查询 LZO 压缩文本文件表,但目前没法建立和插入数据;在 Hive 中执行这些操做 工具

选择表的文件格式

不一样的文件格式和压缩编解码器适合不一样的数据集。尽管不管文件格式如何,Impala 一般能够提高性能收益,可是为你的数据选择合适的格式能够得到进一步的性能提高。 对于特定的表,考虑如下因素来肯定采用哪一种文件格式和压缩方式的组合: oop

  • 假如你正在使用的文件是已经支持的文件格式,实用起见 Impala 表应采用相同的格式。加入原始的文件格式没法提供可接受的查询性能和资源使用,考虑建立一个使用不一样文件格式和压缩特征的新表,并使用 INSERT 语句经过复制数据文件到新表作一次转换。依赖于文件格式的不一样,你可能须要在 impala-shell 或 Hive 中执行 INSERT 语句
  • 文本文件格式可使用多种工具方便的生成,而且人类可读易于严重和调试。这些特性就是为何文本文件是 Impala CREATE TABLE 语句的默认格式。当性能和资源使用是主要考虑时,使用其余格式之一并考虑压缩。一个典型的工做流可能涉及经过复制 CSV 或 TSV 文件到对应的数据目录把数据存入 Impala 表中,而后使用 INSERT ... SELECT 语法复制数据到使用其余更紧凑的文件格式的表中
  • 假如你的架构涉及到存放在内存中被查询的数据,不要进行压缩。这时没有 I/O 节省由于不须要把数据移动到硬盘上,可是解压数据会有 CPU 成本
相关文章
相关标签/搜索