返回 导航

大数据

hangge.com

Impala - 支持的数据存储格式和数据压缩格式详解

作者:hangge | 2024-10-23 08:37
    我在之前的 Hive 相关文章中详细分析了各种数据存储格式和数据压缩格式,而这些数据存储格式和数据压缩格式在 Impala 中也是支持的,下面我将详细进行介绍。

1,基本介绍

(1)数据存储格式方面,Impala 支持对 TextFileSequenceFileAvroRCFileORCParquet 等数据存储格式进行读取,但是对于某些 Impala 支持的不太好的数据存储格式,Impala 只能对其进行查询操作,无法写入数据。具体详情见下表格:

表格内容说明:
  • 存储格式:常见的数据存储格式,Hive 中都支持,Impala 也是可以都读取的。
  • Impala 是否可以直接创建表:意思是说在 Impala 中是否可以在创建表的时候指定这些存储格式,目前我们使用的 Impala3.2.0 版本,这些都是支持的。
  • Impala 是否可以直接插入数据:意思是说在 Impala 中是否可以直接使用 insert into 语句向这些数据存储格式的表中插入数据。目前来看只有 TextFilePARQUET 格式支持,其他的数据格式需要在 Hive 中使用 insert into 语句插入数据。或者在 Impala 中使用 load data 命令也可以,但是前提是需要先把数据整理成对应的数据格式。

(2)数据压缩方面,建议参考我之前写的关在 Hive 数据压缩相关文章内容,在 Hive 中进行设置。

2,使用样例

(1)下面演示一下 ImpalaRCFile 格式的使用,首先我们执行如下命令在 impala 中创建一张 t1_rcfile 表:
提示:其实在实际工作中,为了避免在 Impala 中操作表遇到问题,建议在 Hive 中统一创建、管理表,只在 Impala 中提供快速查询服务,并且最好在每次查询之前先刷新一下表,这样可以保证每次查询的都是最新的数据。
create table t1_rcfile (
  id int,
  name string
)stored as rcfile;

(2)由于目前 Impala 中只能支持向 TextPARQUET 格式的表中写入数据,如果我们在 Impala 中使用 insert into 向表 t1_rcfile 中插入数据则会报错:
insert into t1_rcfile select id,name from t1;

(3)所以这种情况下就需要在 Hive 中使用 insert 语句向这个表中插入数据了:
insert into t1_rcfile select id,name from t1;

(4)上面的 SQL 执行成功后首先在 Hive 中查询下数据:
select id,name from t1_rcfile;

(5)而在 Impala 中查询表数据前需要先刷新表,因为我们是在 Hive 中向这个表里面添加了数据,Impala 中默认是无法识别数据变化的。
refresh t1_rcfile;
select id,name from t1_rcfile;
评论

全部评论(0)

回到顶部