Hadoop 插入配置单元表-非分区表到分区表-无法插入目标表,因为列数/类型
当我试图插入到分区表时,我得到了下面的错误 SemanticException[错误10044]:第1:23行无法插入目标表,因为列编号/类型与“US”不同:表insclause-0有2列,但查询有3列。 我的输入数据Hadoop 插入配置单元表-非分区表到分区表-无法插入目标表,因为列数/类型,hadoop,hive,Hadoop,Hive,当我试图插入到分区表时,我得到了下面的错误 SemanticException[错误10044]:第1:23行无法插入目标表,因为列编号/类型与“US”不同:表insclause-0有2列,但查询有3列。 我的输入数据 1,aaa,US 2,bbb,US 3,ccc,IN 4,ddd,US 5,eee,IN 6,fff,IN 7,ggg,US create table tx (no int,name string,country string) ROW FORMAT DELIMITED FIE
1,aaa,US
2,bbb,US
3,ccc,IN
4,ddd,US
5,eee,IN
6,fff,IN
7,ggg,US
create table tx (no int,name string,country string) ROW FORMAT DELIMITED FIELDS TERMINATED BY ',';
hive> SHOW PARTITIONS t1;
OK
country=IN
country=US
Time taken: 0.291 seconds, Fetched: 2 row(s)
hive>
已创建配置单元表tx
1,aaa,US
2,bbb,US
3,ccc,IN
4,ddd,US
5,eee,IN
6,fff,IN
7,ggg,US
create table tx (no int,name string,country string) ROW FORMAT DELIMITED FIELDS TERMINATED BY ',';
hive> SHOW PARTITIONS t1;
OK
country=IN
country=US
Time taken: 0.291 seconds, Fetched: 2 row(s)
hive>
已创建分区表t1按国家分区
我尝试了以下两种插入方式,但失败了
错误:语义异常[Error 10044]:第1:23行无法插入目标表,因为列数/类型与“US”不同:表INSCLASSION-0有2列,但查询有3列。多亏了Samson Scharfrichter
INSERT OVERWRITE TABLE t1 PARTITION (country='US')
SELECT no,name from tx where country = 'US';
INSERT INTO TABLE t1 PARTITION (country='IN')
SELECT no,name from tx where country = 'IN';
我检查了分区
1,aaa,US
2,bbb,US
3,ccc,IN
4,ddd,US
5,eee,IN
6,fff,IN
7,ggg,US
create table tx (no int,name string,country string) ROW FORMAT DELIMITED FIELDS TERMINATED BY ',';
hive> SHOW PARTITIONS t1;
OK
country=IN
country=US
Time taken: 0.291 seconds, Fetched: 2 row(s)
hive>
RTFM——Hive不是Oracle。在配置单元中,分区“列”作为元数据管理>>它们不包括在数据文件中,而是用作子目录名。因此,分区表只有2个实列,您必须使用SELECT只提供2个列。。。分区(国家)没有文字值——那么分区“列”的实际值必须作为实际列之后的SELECT中的额外列输入。谢谢Samson Scharfrichter。是的,它起作用了。。。。。我发布了正确的查询……我明白了。所以基本上,不要使用*并且不要放置分区列本身。谢谢