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 |
+--------+----------+-------------+--+
分区字段是一个虚拟的字段,不存放任何数据。
多分区表就是文件夹里建文件夹。
内容来源于网络,如有侵权,请联系作者删除!