我需要保留給定 hive 外部表的最后 7 個磁區和資料。
這可以通過 shell 腳本或 hive hql 腳本完成。該表由intgestion_date=YYYY-MM-DD磁區
找到截止日期(第 7 個磁區的)的最佳方法是什么,然后我可以在 drop partitions where 子句中使用它來洗掉比該日期更早的所有內容。因為它是一個外部表,所以我必須在洗掉之前更改表屬性以使其成為內部表,然后將其還原。
uj5u.com熱心網友回復:
有不同的可能方法:洗掉所有超過 7 天的磁區,這很簡單(shell):
hive -e "ALTER TABLE mytable DROP IF EXISTS PARTITION(intgestion_date < '$(date -d "7 days ago" ' %Y-%m-%d')')"
但這似乎不是您想要的。需要先得到第 7 個磁區并在前面的陳述句中使用它。執行 show partition,使用 sort, head and tail 得到第 7 個磁區:
seventh_partition=$(hive -e -S "show partitions table_name" | sort -r | head -n 7 | tail -n 1)
#extract value
part_value=${seventh_partition#*=}
#Execute drop older than 7th partition. Replace hive -e with echo and check what it prints
hive -e "ALTER TABLE table_name DROP IF EXISTS PARTITION(intgestion_date < '$part_value')"
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/372418.html
下一篇:從我使用okta的應用程式注銷
