如何删除具有动态值的配置单元分区

anhgbhbe  于 2021-06-26  发布在  Hive
关注(0)|答案(1)|浏览(461)

我正在寻找一种方法来删除与当前日期相关的分区。

  1. alter table table_name drop partition(rep_date < from_unixtime(unix_timestamp(),'yyyy-MM-dd'));

这将返回一个错误:
无法识别来自(unix。。。
我不需要输入“2017-06-14”就可以做到这一点。我可以将其转换为文字类型吗?当我试着把'演员'在它不喜欢它?

lxkprmvk

lxkprmvk1#

演示

Hive

  1. create table mytable (i int) partitioned by (dt date)
  2. ;
  3. alter table mytable add
  4. partition (dt=date '2017-06-11')
  5. partition (dt=date '2017-06-12')
  6. partition (dt=date '2017-06-13')
  7. partition (dt=date '2017-06-14')
  8. partition (dt=date '2017-06-15')
  9. partition (dt=date '2017-06-16')
  10. partition (dt=date '2017-06-17')
  11. ;
  12. show partitions mytable
  13. ;
  1. +---------------+
  2. | partition |
  3. +---------------+
  4. | dt=2017-06-11 |
  5. | dt=2017-06-12 |
  6. | dt=2017-06-13 |
  7. | dt=2017-06-14 |
  8. | dt=2017-06-15 |
  9. | dt=2017-06-16 |
  10. | dt=2017-06-17 |
  11. +---------------+

猛击

  1. hive --hivevar dt="$(date +'%Y-%m-%d')" -e 'alter table mytable drop partition (dt < date "${hivevar:dt}")'
  2. ...
  3. Dropped the partition dt=2017-06-11
  4. Dropped the partition dt=2017-06-12
  5. Dropped the partition dt=2017-06-13
  6. OK
  7. Time taken: 1.621 seconds
  8. ...
  9. bash-4.1$

Hive

  1. show partitions mytable
  2. ;
  1. +---------------+
  2. | partition |
  3. +---------------+
  4. | dt=2017-06-14 |
  5. | dt=2017-06-15 |
  6. | dt=2017-06-16 |
  7. | dt=2017-06-17 |
  8. +---------------+
展开查看全部

相关问题