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 查询这些表。文件格式能够是结构化的,他们可能包含元数据和内置的压缩支持。支持的文件格式包括: 架构
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
LZO, 仅支持文本文件。Impala 能够查询 LZO 压缩文本文件表,但目前没法建立和插入数据;在 Hive 中执行这些操做 工具
不一样的文件格式和压缩编解码器适合不一样的数据集。尽管不管文件格式如何,Impala 一般能够提高性能收益,可是为你的数据选择合适的格式能够得到进一步的性能提高。 对于特定的表,考虑如下因素来肯定采用哪一种文件格式和压缩方式的组合: oop