1
当我试图插入Partiotioned表时,出现波纹管错误 SemanticException [Error 10044]:Line 1 :23不能插入到目标表中,因为列号/类型不同'US'':表inslace-0有2列,但查询有3列。插入Hive表 - 不能插入到目标表中,因为列号/类型
我的输入数据
1,aaa,US
2,bbb,US
3,ccc,IN
4,ddd,US
5,eee,IN
6,fff,IN
7,ggg,US
创建蜂巢表TX
create table tx (no int,name string,country string) ROW FORMAT DELIMITED FIELDS TERMINATED BY ',';
创建按国家划分分区表T1
create table t1 (no int,name string) PARTITIONED BY (country string) ROW FORMAT DELIMITED FIELDS TERMINATED BY ',';
我试过波纹管两个插入,但未能
INSERT OVERWRITE TABLE t1 PARTITION (country='US')
SELECT * from tx where country = 'US';
INSERT OVERWRITE TABLE t1 PARTITION (country='US')
SELECT no,name,country from tx where country = 'US';
错误:SemanticException [错误10044]:行1:23无法插入到目标表,因为列数/类型不同的'US'':表insreg-0具有2列,但查询具有3列。
RTFM - 海夫不是甲骨文。在Hive中,分区“列”作为**元数据**进行管理,它们不包含在数据文件中,而是用作子目录名称。所以你的分区表只有2个真正的列,你必须用你的SELECT只输入2列。 –
另一方面,如果您使用了*动态分区* - 即没有文字值的'INSERT ... PARTITION(country)' - 那么分区“列”的实际值将不得不作为*在SELECT中的额外*列,在真正的列之后。 –
谢谢一吨Samson Scharfrichter。是的,它工作.....我发布了正确的查询.... –