hive-static partitioning-直接创建分区目录与使用alter table语句的区别

8i9zcol2  于 2021-06-02  发布在  Hadoop
关注(0)|答案(1)|浏览(363)

下面两个在hive中创建静态分区的语句之间是否存在内部/性能上的差异,我已经尝试了两种方法,在将数据加载到分区后,它们都没有任何问题

dfs -mkdir /user/cloudera/sqoop_import/avroData/orders_part/order_month=2014-02;
alter table orders_part add partition(order_month='2014-02');
9cbw7uwe

9cbw7uwe1#

此命令: dfs -mkdir /user/cloudera/sqoop_import/avroData/orders_part/order_month=2014-02; 不创建分区,而是创建一个目录。此目录尚未作为表分区装入。分区是一个目录加上一个元数据,其中包含存储在metastore中的分区信息(键值+分区目录)。您可以使用 show partitions orders_part; 执行mkdir后的命令。此目录将不在分区列表中。 alter table orders_part add partition(order_month='2014-02'); 创建目录 order_month=2014-02 并将其作为分区装载。
分区可以使用

insert overwrite table orders_part partition(order_month) 
select ...

命令。在这种情况下,目录将自动创建并作为分区装载。
考虑一下:您可以使一个分区不一定位于等于'key=value'的目录中。例如: alter table orders_part add partition(order_month='2014-02') location '/user/cloudera/sqoop_import/avroData/orders_part/mydir' ; 注意分区目录现在是 '/user/cloudera/sqoop_import/avroData/orders_part/mydir' .

相关问题