转换正常列作为蜂巢分配柱(convert normal column as partition co

2019-10-17 06:21发布

我有3列的表。 现在我需要修改列作为分区列的一个。 是否有可能? 如果没有,我们如何才能增加分区现有的表。 我用下面的语法:创建表t1(ENO INT,ENAME串)由“\ T”终止行格式分隔的字段; 负载数据的本地“/....path/”变成表t1; 改变表t1添加分区(P1 = '印度');

我得到的错误.........

任何一个知道如何分区添加到现有的表 ......?

提前致谢。

Answer 1:

我不认为这是直接可行的。 蜂房必须完全重新排列,并分成HDFS文件因为添加分区会强加一个新的目录结构。

我建议你做的是简单地创建一个新表所需要的模式和分区,然后将一切从第一到第二位。



Answer 2:

我认为这是没有办法的表的现有列转换为分区。 如果你想添加一个分区表中的使用,你已经做了ALTER命令。 如果你正在处理的外部表,然后指定位置字段为好。 我不知道是否分区可以使用ALTER命令来管理的表添加。



Answer 3:

不能将分区添加到创建的表。 但是,你可以这样做这些步骤。 创建一个新表并插入从旧表中的数据到新的一个。

/*Original table structure*/
CREATE  TABLE original_table(
    c1 string,
    c2 string,
    c3 string)
STORED AS ORC;



/*Partitioned table structure*/
CREATE  TABLE partitioned_table(
    c1 string,
    c2 string)
partitioned by (c3 string)  
STORED AS ORC;


/*load data from original_table to partitioned_table*/
insert into table partitioned_table partition(c3)     select c1,c2,c3 from  original_table;


/*remae original_table to old_table. You can just drop it if you want it*/
ALTER TABLE original_table RENAME TO old_table;


/*rename partitioned_table to original_table*/
ALTER TABLE partitioned_table RENAME TO original_table; 


文章来源: convert normal column as partition column in hive