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

时间:2016-02-23 19:33:12

标签: hadoop hive

所以我有一个shell脚本尝试运行一个hive命令来添加一个分区,方法是传给它像formatted_date = 2016-01-01,而hive sql做类似的事情

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

最终发生的事情是它创建了一个名为

的分区
create_dt=$%7Bformatted_date}

没关系,我只是想放弃这个分区。但是运行像下面这样的drop partition命令实际上并没有丢弃分区。

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是最早的分区,而且是在格式错误的分区之后订购的。

不是理想的解决方案,我仍然希望看到如何处理分区值中的编码/控制字符。

1 个答案:

答案 0 :(得分:0)

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

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