博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Impala 表使用 RCFile 文件格式(翻译)
阅读量:5815 次
发布时间:2019-06-18

本文共 3119 字,大约阅读时间需要 10 分钟。

hot3.png

Impala 表使用 RCFile 文件格式

Cloudera Impala 支持使用 RCFile 数据文件。

查询一下章节了解 Impala 表使用 RCFile 数据文件的详情:

创建 RCFile 表并加载数据

假如你没有使用现有的数据文件,先创建一个合适格式的文件。

创建 RCFile 表:

在 impala-shell 中,执行类似下面的命令:

create table rcfile_table (column_specs) stored as rcfile;

因为 Impala 可以查询一些目前它无法写入数据的表,当创建特定格式的表之后,你可能需要在 Hive shell 中加载数据。参见 了解详细信息。当通过 Hive 或其他 Impala 之外的机制加载数据之后,在你下次连接到 Impala 节点时,在执行关于这个表的查询之前,执行 REFRESH table_name 语句,以确保 Impala 识别到新添加的数据。

例如,下面是你如何在 Impala 中创建 RCFile 表(通过显式设置列,或者克隆其他表的结构),通过 Hive 加载数据,并通过 Impala 查询:

$ impala-shell -i localhost[localhost:21000] > create table rcfile_table (x int) stored as rcfile;[localhost:21000] > create table rcfile_clone like some_other_table stored as rcfile;[localhost:21000] > quit;$ hivehive> insert into table rcfile_table select x from some_other_table;3 Rows loaded to rcfile_tableTime taken: 19.015 secondshive> quit;$ impala-shell -i localhost[localhost:21000] > select * from rcfile_table;Returned 0 row(s) in 0.23s[localhost:21000] > -- Make Impala recognize the data loaded through Hive;[localhost:21000] > refresh rcfile_table;[localhost:21000] > select * from rcfile_table;+---+| x |+---+| 1 || 2 || 3 |+---+Returned 3 row(s) in 0.23s

RCFile 表启用压缩

你可能希望对已有的表启用压缩。启用压缩大多数情况下能提高性能提升,并且 RCFile 表支持压缩。例如,启用 Snappy 压缩,你需要通过 Hive shell 加载数据时设置以下附加设置:

hive> SET hive.exec.compress.output=true;hive> SET mapred.max.split.size=256000000;hive> SET mapred.output.compression.type=BLOCK;hive> SET mapred.output.compression.codec=org.apache.hadoop.io.compress.SnappyCodec;hive> INSERT OVERWRITE TABLE new_table SELECT * FROM old_table;

假如你转换分区表,你必须完成额外的步骤。这时候,类似下面指定附加的设置:

hive> CREATE TABLE new_table(your_cols) PARTITIONED BY (partition_cols) STORED AS new_format;hive> SET hive.exec.dynamic.partition.mode=nonstrict;hive> SET hive.exec.dynamic.partition=true;hive> INSERT OVERWRITE TABLE new_table PARTITION(comma_separated_partition_cols) SELECT * FROM old_table;

请记住 Hive 不需要你设置源格式。考虑转换一个包含年和月两个分区列的分区表到采用 Snappy 压缩的 RCFile 格式,结合之前所述的组件来完成这个表的转换,你应当类似下面指定设置:

hive> CREATE TABLE tbl_rc (int_col INT, string_col STRING) STORED AS RCFILE;hive> SET hive.exec.compress.output=true;hive> SET mapred.max.split.size=256000000;hive> SET mapred.output.compression.type=BLOCK;hive> SET mapred.output.compression.codec=org.apache.hadoop.io.compress.SnappyCodec;hive> SET hive.exec.dynamic.partition.mode=nonstrict;hive> SET hive.exec.dynamic.partition=true;hive> INSERT OVERWRITE TABLE tbl_rc SELECT * FROM tbl;

为了对分区表完成类似的处理,你应当类似下面指定设置:

hive> CREATE TABLE tbl_rc (int_col INT, string_col STRING) PARTITIONED BY (year INT) STORED AS RCFILE;hive> SET hive.exec.compress.output=true;hive> SET mapred.max.split.size=256000000;hive> SET mapred.output.compression.type=BLOCK;hive> SET mapred.output.compression.codec=org.apache.hadoop.io.compress.SnappyCodec;hive> SET hive.exec.dynamic.partition.mode=nonstrict;hive> SET hive.exec.dynamic.partition=true;hive> INSERT OVERWRITE TABLE tbl_rc PARTITION(year) SELECT * FROM tbl;
20152600_KR0t.jpg  
Note:

使用下面命令设置压缩类型:

SET mapred.output.compression.codec=org.apache.hadoop.io.compress.SnappyCodec;

你可以在这里选择替代的编解码器如 GzipCodec。

转载于:https://my.oschina.net/weiqingbin/blog/194431

你可能感兴趣的文章
蓝图(Blueprint)详解
查看>>
Spark之SQL解析(源码阅读十)
查看>>
Android图片添加水印图片并把图片保存到文件存储
查看>>
比特币系统采用的公钥密码学方案和ECDSA签名算法介绍——第二部分:代码实现(C语言)...
查看>>
海贼王十大悲催人物
查看>>
BigDecimal 舍入模式(Rounding mode)介绍
查看>>
开源 免费 java CMS - FreeCMS1.2-标签 infoSign
查看>>
开源 免费 java CMS - FreeCMS1.9 移动APP生成栏目列表数据
查看>>
git reset 三种用法总结
查看>>
虚拟机新增加硬盘,不用重启读到新加的硬盘
查看>>
Java IO流详尽解析
查看>>
邮件服务系列之四基于虚拟用户的虚拟域的邮件系统(安装courier-authlib以及部分配置方法)...
查看>>
Linux VSFTP服务器
查看>>
DHCP中继数据包互联网周游记
查看>>
Squid 反向代理服务器配置
查看>>
Java I/O操作
查看>>
Tomcat性能调优
查看>>
项目管理心得
查看>>
Android自学--一篇文章基本掌握所有的常用View组件
查看>>
灰度图像和彩色图像
查看>>