impala理论篇之四:Impala支持的文件格式

Impala支持的文件格式

Impala 支持几种熟悉的 Apache Hadoop 中使用的文件格式。Impala 可以加载或查询其他 Hadoop 组件如 Pig 或 MapReduce 产生的数据文件,并且 Impala 产生的数据文件也可以被其他组件使用。

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

Impala可以对Hadoop中大多数格式的文件进行查询。它能通过create table和insert的方式将一部分格式的数据加载到table中,但是,有一些格式的数据它无法写入(write to)。对于impala无法写入的数据格式,我们只能通过hive建表,通过hive进行数据的写入,然后使用impala对这些保存好的数据执行查询操作。

文件类型

文件格式

压缩编码

能否create

能否insert

Parquet

结构化

Snappy

GZIP

Text

非结构化

LZO

如果建表时没有指定存储类型,默认采用未压缩的text,字段由ASCII编码的0x01字符串分割

如果使用了LZO压缩,则只能通过hive建表和插入数据

Avro

结构化

Snappy

GZIP

Deflate

BZIP2

在impala1.4.0或者更高版本上支持,之前的版本只能通过hive来建表

不能

只能通过load data的方式将已经转换好格式的数据加载进去,或者使用hive来插入数据

RCFile

结构化

Snappy

GZIP

Deflate

BZIP2

不能

只能通过load data的方式将已经转换好格式的数据加载进去,或者使用hive来插入数据

SequenceFile

结构化

Snappy

GZIP

Deflate

BZIP2

不能

只能通过load data的方式将已经转换好格式的数据加载进去,或者使用hive来插入数据

Impala支持以下压缩编码:

  • Snappy-推荐的编码,因为它在压缩率和解压速度之间有很好的平衡性,snappy压缩速度快,但是不如GZIP那样能节省更多的存储空间。Impala不支持snappy压缩的text 文件。
  • GZIP-压缩比很高能节省很多存储空间,期望达到最大压缩比(最少硬盘空间)时推荐;impala不支持GZIP压缩的text文件。
  • Deflate-impala不支持GZIP压缩的text文件。

备注:gzip是一种数据格式,默认且目前仅使用deflate算法压缩data部分;

deflate是一种压缩算法,是huffman编码的一种加强。

deflate与gzip解压的代码几乎相同,可以合成一块代码。但也是有区别的,这里就不介绍了,可以自行百度一下。

根据有关GZip和Deflate的资料说明,Deflate只是一种过时的网页压缩,现在浏览器对其支持并不好,应该禁用deflate压缩。

  • BZIP2-impala不支持BZIP2压缩的text文件。
  • LZO-只用于text文件,impala可以查询LZO压缩的text格式数据表,但是不支持create和insert数据,可以先在 Hive 中创建这些表,在 impala-shell 中执行 INVALIDATE METADATA table_name语句,然后通过 Impala 查询这些表。

如何选择Impala表底层文件的格式?

不同的文件格式和压缩编码适合不同的数据集。无论文件格式如何,Impala 通常可以提供不错的性能收益,但为表的底层数据选择合适的格式可以获得进一步的性能提升。 对于特定的表,考虑以下因素来确定采用哪种文件格式和压缩方式的组合:

假如你正在使用的文件是已经支持的文件格式,实用起见 Impala 表应采用相同的格式。如果原始的文件格式无法提供可接受的查询性能或资源利用率,可以考虑创建一个使用不同文件格式和压缩编码的新表,并使用 INSERT 语句通过复制数据文件到新表做一次转换。依赖于文件格式的不同,你可能需要在 impala-shell 或 Hive 中执行 INSERT 语句。

文本格式文件可以使用多种工具方便的生成,且在验证和调试时易于阅读。这些特性就是文本文件是 Impala CREATE TABLE 语句的默认格式的原因。当需要考虑性能和资源使用时,可以使用其他文件格式和压缩编码方式。典型的步骤如下:先将文本格式文件载入一个impala表中,然后使用 INSERT ... SELECT 语法复制数据到另一个使用其他更紧凑的文件格式的impala表中。

如果您的体系结构涉及将要查询的数据存储在内存中不要进行压缩。因为不需要把数据移动到硬盘上,没有 I/O 节省,但解压数据时会有 CPU 成本。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AllenGd

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值