如何使用不同的分区从另一个hive表创建一个hive表而不移动数据?

时间:2016-04-04 13:03:05

标签: hadoop hive hdfs

我有一个表database1.table1

表" database1.table1'有2列和一个分区列:columnA,columnB由columnC

分区

我需要创建一个表" database2.table2'没有分区但有两列columnA,columnB。我需要将database1.table1中的数据复制到database2.table2中(不删除database1.table1中的任何数据)

我尝试了以下但数据被移动了。我需要复制数据

CREATE TABLE DATABASE2.TABLE2 
SELECT COLUMNA, COLUMNB
FROM DATABASE1.TABLE1

注意:我需要包含实际数据的表,我无法创建EXTERNAL表。

1 个答案:

答案 0 :(得分:1)

您应该能够按照您所说的方式复制数据。只需添加' AS'。见the CREATE AS SELECT documentation。 你说的是数据被移动了,但那是不可能的。 CREATE AS SELECT将触发map reduce作业。请注意文档 你也可以改变数据格式,使用不同的serde,和 你自己的分区(或没有分区,就像你要问的那样)。

USE database2;
CREATE TABLE table2 
  AS SELECT columna,columnb 
  FROM database1.table1