如何从多个现有表中填充新的配置单元表的列?

时间:2017-01-18 12:08:42

标签: hadoop hive

我在hive(T1)中创建了一个包含列c1,c2,c3,c4的新表。我想通过查询其他现有表(T2,T3)来将数据填充到此表中。

例如c1和c2来自在T2&amp ;;其他列c3和c4来自在T3上运行的查询。 这可能在蜂巢中吗?我做了大量的研究,但仍无法找到解决方案

2 个答案:

答案 0 :(得分:3)

没有像这样的工作吗?

create table T1 as 
select t2.c1, t2.c2, t3.c3, t3.c4 from (some query against T2) t2 JOIN (some query against T3) t3

显然用任何需要的东西替换JOIN。我假设T2和T3之间可能有一些连接,否则你就不会在T1中将它们的列放在一起。

答案 1 :(得分:0)

根据hive documentation,您可以使用以下语法插入数据:

INSERT INTO TABLE tablename1 [PARTITION (partcol1=val1, partcol2=val2 ...)] select_statement1 FROM from_statement;

小心:

  

必须为表中的每一列提供值。尚不支持允许用户仅将值插入某些列的标准SQL语法。为了模仿标准SQL,可以为用户不希望为其赋值的列提供空值。

所以,我会在两个现有表之间建立一个JOIN,然后只在SELECT目标表中插入所需的值。或者,创建临时表可以让您更好地控制数据。只需记住用NULL处理问题,如官方文档中所述。这只是一个想法,我想还有其他方法可以实现您的需求,但可能是一个很好的起点。