使用load命令将数据加载到hive静态分区表

Raj*_*Raj 3 hadoop hive hiveql hadoop2

请不要介意它是否是一个非常基本的:

的test.txt

1 ravi 100 hyd
2 krishna 200 hyd
3 fff 300秒

我在hive中创建了一个带有城市分区的表,并加载了如下数据:

create external table temp(id int, name string, sal int) 
partitioned by(city string) 
location '/testing';
Run Code Online (Sandbox Code Playgroud)

load data inpath '/test.txt' into table temp partition(city='hyd');

在HDFS中,结构是/testing/temp/city=hyd/test.txt

当我查询表为"select*from temp"时;

输出:

temp.id temp.name temp.sal temp.city  
    1   ravi    100 hyd  
    2   krishna 200 hyd  
    3   fff     300 hyd  
Run Code Online (Sandbox Code Playgroud)

这里我的问题是为什么第三行中"sec"的城市名称在输出中变为"hyd"?

我这边有什么不对吗?

提前致谢 !!!

ozw*_*5rd 6

你的问题是这样的:

load data inpath '/test.txt' into table temp partition(city='hyd');
Run Code Online (Sandbox Code Playgroud)

您加载到此分区的所有数据都使用city ='hyd'.如果您正在进行静态分区,则您有责任将正确的值放入分区.

只需从txt文件中删除最后一行,将其放入test2.txt并执行:

load data inpath '/test.txt' into table temp partition(city='hyd');
load data inpath '/test2.txt' into table temp partition(city='sec');
Run Code Online (Sandbox Code Playgroud)

是的,不是那么舒服,但静态分区以这种方式工作.