hive外部分区表?

0
刚开始接触hive,对其使用有个疑问:
我是想使用外部分区表,那么问题来了
如果是先建立分区表,再按规则放文件,那全部都是静态分区
如果hdfs上已经有了很多文件,先建立为未区外部表t_org指向文件,
再用insert overwrite table t_par... partition (c1) select ... from t_org,
这样倒是动态分区了,但需要两倍的空间(t_org、t_par分别对应的文件),
通常用哪种方式好呢?或是我理解的不对,有更好的方式呢?
 
已邀请:
2

Bob - 同程旅游大数据+BI 架构师 2015-10-28 回答

如果你想做到hive动态分区,可建议如下做法:
create table table_name (
  id                int,
  dtDontQuery       string,
  name              string
)
partitioned by (year int,month int,day int)

--动态新增分区
ALTER TABLE table_name ADD IF NOT EXISTS PARTITION (year=2015,month=10,day=20) LOCATION '/data/table_name/2015/10/20'

--动态删除分区
ALTER TABLE table_name DROP IF EXISTS PARTITION (year=2015,month=10,day=20);
在实际生产环节中,不建议直接删除。我们采用的做法是disable 分区。

要回复问题请先登录注册