hive复制表 存储格式转换

在之前的博客中已经介绍过hive的四种存储格式:http://blog.csdn.net/zyzzxycj/article/details/79267635


本文以ORCFile存储格式为例,详细介绍hive上转换表的存储格式的步骤和需要注意的地方。


1、 查看需要转换的原表信息


show create table 表名;


hive复制表 存储格式转换_第1张图片


这边的tmp_mf是用默认格式TextFile储存的。


2、复制表信息 并创建表test2:


CREATE TABLE test2(
  `entity_id` string, 
  `self_entity_id` string, 
  `shop_entity_id` string, 
  `curr_date` string, 
  `card_kind_id` string, 
  `topup_principal` double, 
  `topup_gift` double, 
  `pay_principal` double, 
  `pay_gift` double)
Row format delimited fields terminated by ’\001‘ stored as orcfile;

(注意!!'\001'的单引号,需要把代码复制到hive之后,重新删除再补上单引号 不然会报语法错误)

(注意!!如果有分区 需要在最后一行之前加上一行 分区信息 partitioned by(.....))


hive复制表 存储格式转换_第2张图片


3、将源数据导入新表


set hive.exec.dynamic.partition=true;
set hive.exec.dynamic.partition.mode=nonstrict;
set hive.exec.max.dynamic.partitions.pernode=500;
insert overwrite table test2
select * from tmp_mf;

(注意!!如果有分区 需要在第四行 表名test2之后加上分区信息 partition(.....))


hive复制表 存储格式转换_第3张图片


hive复制表 存储格式转换_第4张图片


4、验证结果


hive复制表 存储格式转换_第5张图片


也可以去select 一些数据,进行对比验证。

你可能感兴趣的:(hadoop,hive)