簡體   English   中英

自動化外部配置單元/雅典娜表分區管理

[英]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的對象創建事件。

    1. 對象被丟棄,事件觸發
    2. Lambda函數啟動並看到對象鍵
    3. 調用Athena查詢以將新對象添加為分區。
  • 用戶標記為刪除時,顯式調用ALTER TABLE DROP PARTITION命令。

唯一需要注意的是,我認為Athena分區必須是“文件夾”,即分區的位置必須以/結束,並且您不能將單個文件添加為分區。 Athena知道的“文件夾”中添加的任何文件都將添加到任何查詢中。 在這種情況下,您可能需要修改文件結構(基於已發布的示例)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM