所以我有一个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是最早的分区,而且是在格式错误的分区之后订购的。
不是理想的解决方案,我仍然希望看到如何处理分区值中的编码/控制字符。
答案 0 :(得分:0)
看起来这些是可以使用正则表达式转义的特殊字符。我会尝试下面,但不幸的是我无法测试代码。祝你好运!
alter table my_db.table drop partition (create_dt rlike '\\$\\%7Bcurrdate\\}')