Hive分区表

x33g5p2x  于2021-03-14 发布在 其他  
字(0.9k)|赞(0)|评价(0)|浏览(75)

partitioned by (dt string)分区

create table t1(id int, name string) partitioned by (country string) row format delimited fields terminated by ',';

分区字段不能与已有字段重复

1,Apollo
2,Paul

将数据放入/user/hive/warehouse/gosuncn.db/t1中会发现,此时并不会映射成功。

此时,就不能用hadoop fs -put 1.txt /user/hive/warehouse/gosuncn.db/t1来放置数据了。

在Hive命令行中执行:

LOAD DATA local INPATH '/root/1.txt' INTO TABLE t1 partition(country='USA');

加local表示加载Linux文件系统的文件,不加表示加载hdfs上的文件。

select * from t1;
+--------+----------+-------------+--+
| t1.id  | t1.name  | t1.country  |
+--------+----------+-------------+--+
| 1      | Apollo   | USA         |
| 2      | Paul     | USA         |
+--------+----------+-------------+--+

在Hive命令行中执行:

LOAD DATA local INPATH '/root/1.txt' INTO TABLE t1 partition(country='CHINESE');
+--------+----------+-------------+--+
| t1.id  | t1.name  | t1.country  |
+--------+----------+-------------+--+
| 1      | USA      | CHINESE     |
| 2      | China    | CHINESE     |
| 1      | Apollo   | USA         |
| 2      | Paul     | USA         |
+--------+----------+-------------+--+

分区字段是一个虚拟的字段,不存放任何数据。

多分区表就是文件夹里建文件夹。

相关文章