Hadoop 插入配置单元表-非分区表到分区表-无法插入目标表,因为列数/类型

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

当我试图插入到分区表时,我得到了下面的错误 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 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。是的,它起作用了。。。。。我发布了正确的查询……我明白了。所以基本上,不要使用*并且不要放置分区列本身。谢谢