删除具有url编码字符的配置单元分区

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

因此,我让一个shell脚本尝试运行一个hive命令来添加一个分区,方法是传递格式化的\u date=2016-01-01之类的内容,hive sql执行如下操作

alter table my_db.table add partition (create_dt = '${formatted_date}'
location '/user/.....'

结果是它创建了一个名为

create_dt=$%7Bformatted_date}

没关系,我只想放下这个隔板。但是像下面这样运行droppartition命令实际上并不会删除分区。

alter table my_db.table drop partition (create_dt = "create_dt=$%7Bcurrdate}")

我猜这和编码的url字符有关。放下这个分区最好的方法是什么?
编辑:
我很幸运,因为我的分区是这样设置的,格式错误的分区最终被作为第一个分区排序,所以我使用了如下语句来删除它:

alter table my_db.table drop partition (create_dt < '2016-01-01');

其中2016-01-01是最早的分区,是在错误分区之后订购的分区。
这不是一个理想的解决方案,我仍在研究如何处理分区值中的编码/控制字符。

3npbholx

3npbholx1#

看起来这些是特殊字符,可以通过使用正则表达式转义。我会尝试下面,但不幸的是,我不能测试代码。祝你好运!

alter table my_db.table drop partition (create_dt rlike '\\$\\%7Bcurrdate\\}')

相关问题