Hadoop 删除配置单元中超过30天的分区

Hadoop 删除配置单元中超过30天的分区,hadoop,hive,hiveql,Hadoop,Hive,Hiveql,我已经根据日期yyyy-mm-dd对配置单元表进行了分区。我想每天运行一个脚本,可以删除所有超过30天的分区,但在这种情况下,我不想传递日期。我希望它采用系统日期并删除超过30天的分区。您需要使用Linux/Unix为DROP PARTITION date设置变量,并在ALTER TABLE语句中使用它 这里有一个例子 CREATE TABLE ramesh.test (col1 STRING, col2 STRING) PARTITIONED BY (partition_date date

我已经根据日期yyyy-mm-dd对配置单元表进行了分区。我想每天运行一个脚本,可以删除所有超过30天的分区,但在这种情况下,我不想传递日期。我希望它采用系统日期并删除超过30天的分区。

您需要使用Linux/Unix为DROP PARTITION date设置变量,并在ALTER TABLE语句中使用它

这里有一个例子

CREATE TABLE ramesh.test
(col1 STRING, 
 col2 STRING)
PARTITIONED BY (partition_date date);

INSERT INTO TABLE ramesh.test PARTITION (partition_date='2017-10-01') VALUES ('key1', 'val1');
INSERT INTO TABLE ramesh.test PARTITION (partition_date='2017-10-02') VALUES ('key2', 'val2');
INSERT INTO TABLE ramesh.test PARTITION (partition_date='2017-11-01') VALUES ('key3', 'val3');


hive--hivevar var_drop_date=“$(date-d”30天前”+%Y-%m-%d”)“-e”ALTER TABLE ramesh.test drop IF EXISTS PARTITION(PARTITION_date您需要使用Linux/Unix为drop PARTITION date设置变量,并在ALTER TABLE语句中使用它

这里有一个例子

CREATE TABLE ramesh.test
(col1 STRING, 
 col2 STRING)
PARTITIONED BY (partition_date date);

INSERT INTO TABLE ramesh.test PARTITION (partition_date='2017-10-01') VALUES ('key1', 'val1');
INSERT INTO TABLE ramesh.test PARTITION (partition_date='2017-10-02') VALUES ('key2', 'val2');
INSERT INTO TABLE ramesh.test PARTITION (partition_date='2017-11-01') VALUES ('key3', 'val3');


hive--hivevar var\u drop\u date=“$(日期-d”30天前”+%Y-%m-%d”)“-e”ALTER TABLE ramesh.test drop(如果存在分区)(partition_date您的配置单元表是托管的还是外部表?您使用什么来运行配置单元脚本?UNIX、ADF等?它是托管的orc表,我用hql编写了脚本。我可以使用linux或UNIX脚本,这不是问题。您能帮我分享一下您所做的尝试吗?编写了一个脚本,但它删除了所有旧的分区。)r大于当前日期。我试图给pass值30,但它抛出错误->hive--hivevar today=$(日期+%Y-%m-%d”)-e\>'alter table local_db.mytable drop partition(您的配置单元表是托管的还是外部表?您使用什么来运行配置单元脚本?UNIX、ADF等?它是托管的orc表,我用hql编写了脚本。我可以使用linux或UNIX脚本,这不是问题。您能帮我分享一下您所做的尝试吗?编写了一个脚本,但它删除了所有比curre更早的分区nt date。我试图给pass值30,但它抛出错误->hive--hivevar today=$(日期+%Y-%m-%d”)-e\>'alter table local\u db.mytable drop partition(Daysthan Ramesh。我还尝试了CDH,它解决了我的问题。请解释一下(日期-d“30天前”+%Y-%m-%d”)我不知道何时将--hivevar、-hiveconf和--hiveenvdate命令与“30天前”一起使用为您提供系统日期-30天。请查看此hivevar/conf-明白。谢谢Ramesh@Priyanka-不客气。您可能希望在此处将其标记为答案,因为解决方案已起作用。谢谢Ramesh。我也尝试了CDH,它解决了我的问题。您能解释一下(日期-d“30天前”+%Y-%m-%d)吗我不知道什么时候使用--hivevar、--hiveconf和--hiveenvdate命令加上“30天前”会给你提供系统日期-30天。请看这个关于hivevar/conf的信息,明白了。谢谢Ramesh@Priyanka-不客气。您可能希望在此处将其标记为答案,因为解决方案已起作用。