如何删除hive分区与hivevar作为分区变量传递?



我一直在尝试运行这段代码来从hive表中删除当前的分区,但由于某种原因,它没有从hive表中删除分区。不知道怎么了。

Table Name : prod_db.products
desc:
+----------------------------+-----------------------+-----------------------+--+
|          col_name          |       data_type       |        comment        |
+----------------------------+-----------------------+-----------------------+--+
| name                       | string                |                       |
| cost                       | double                |                       |
| load_date                  | string                |                       |
|                            | NULL                  | NULL                  |
| # Partition Information    | NULL                  | NULL                  |
| # col_name                 | data_type             | comment               |
|                            | NULL                  | NULL                  |
| load_date                  | string                |                       |
+----------------------------+-----------------------+-----------------------+--+
## I am using the following code
SET hivevar:current_date=current_date();
ALTER TABLE prod_db.products DROP PARTITION(load_date='${current_date}');

Before and After picture of partitions:
+-----------------------+--+
|       partition       |
+-----------------------+--+
| load_date=2022-04-07  |
| load_date=2022-04-11  |
| load_date=2022-04-18  |
| load_date=2022-04-25  |
+-----------------------+--+

它运行没有任何错误,但不工作,但不会删除分区。表是内部/管理的。我尝试了堆栈上提到的不同方法,但它只是不适合我。帮助。

你不需要设置变量。您可以使用direct sql直接删除。

Alter table prod_db.products
drop partition (load_date= current_date());

最新更新