因此,我让一个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是最早的分区,是在错误分区之后订购的分区。
这不是一个理想的解决方案,我仍在研究如何处理分区值中的编码/控制字符。
1条答案
按热度按时间3npbholx1#
看起来这些是特殊字符,可以通过使用正则表达式转义。我会尝试下面,但不幸的是,我不能测试代码。祝你好运!