![](/img/trans.png)
[英]creating external table with partition in ATHENA results in empty table
[英]Automate external hive/athena table partition management
我目前擁有一個大數據架構,其中一些數據管道生成數據輸出並將其存儲在AWS S3上。 我也有一個內部元數據存儲,在其中跟蹤每個S3 URL和狀態(指示URL是否有效)。
有一個計划的AWS膠搜尋器,可搜尋S3前綴並將新生成的S3路徑作為新分區添加到關聯的外部雅典娜表中。 因此,我的外部表中的數據將自動刷新並可供查詢。 這很好。
這是我要與該體系結構集成的一項新要求-用戶可以在自我管理的元存儲中將某些S3 URL標記為無效,並且我想自動從外部表中刪除這些分區。
想知道什么是解決此問題的最佳方法?
例如:考慮到S3存儲桶中有50個URL,它反映在如下所示的自我管理元存儲中-
似乎即使我通過查詢megastore中的無效分區來刪除分區,它們也將在下次運行粘合爬蟲時再次顯示。 從S3前綴移動/刪除數據是這里唯一的選擇嗎? 謝謝!
如果您的過程很簡單並且不需要很大的靈活性或自定義,則Glue搜尋器會很好地工作。 我喜歡它作為起點。 我不認為它適用於復雜的系統。
在這種情況下,我將關閉Glue搜尋器。 沒錯-搜尋器將簡單地重新添加那些刪除的分區。
ALTER TABLE
輕松地從Athena表中添加和刪除分區。 ALTER TABLE ADD PARTITION
命令。 這非常簡單-讓Lambda函數監聽S3的對象創建事件。
用戶標記為刪除時,顯式調用ALTER TABLE DROP PARTITION
命令。
唯一需要注意的是,我認為Athena分區必須是“文件夾”,即分區的位置必須以/
結束,並且您不能將單個文件添加為分區。 Athena知道的“文件夾”中添加的任何文件都將添加到任何查詢中。 在這種情況下,您可能需要修改文件結構(基於已發布的示例)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.