我的 AWS Glue 編目程式沒有在資料表中新增分割區。
簡短描述
AWS Glue 將 Amazon Simple Storage Service (Amazon S3) 路徑中分割區的名稱、順序或數量的差異視為分割區結構描述或結構的變化。編目程式會掃描新分割區下的來源資料檔案,並將來源檔案的以下屬性與現有資料表的屬性進行比較:
- 檔案格式
- 壓縮類型
- 結構描述
- Amazon S3 分割區的結構
如果任何分割區屬性與資料表屬性不同,則 AWS Glue 會跳過該分割區並且不會更新中繼資料。
解決方法
對問題進行疑難排解
若要檢查編目程式日誌以識別問題,請完成以下步驟:
- 開啟 AWS Glue console (AWS Glue 主控台)。
- 在瀏覽窗格中,選擇 Crawlers (編目程式)。
- 選取編目程式,然後選擇 Logs (日誌) 以檢視 Amazon CloudWatch 主控台上的記錄。
- 查看日誌以檢查編目程式是否跳過了新分割區。
例如,假設記錄包含的項目看起來類似下列內容:
Folder partition keys do not match table partition keys, skipped folder: doc-example-bucket/doc-example-path/doc-example-table/year=2021/month=01/sday=05/
此項目表示 Amazon S3 位置的分割區結構與資料表定義的分割區索引鍵不符。當分割區結構在資料表來源位置不一致時,就可能會出現此差異。
如果 AWS Glue 編目程式建立多個資料表,則日誌項目看起來會類似以下內容:
INFO : Created table doc-example-table in database doxtest_db
如果您看到類似的日誌,請比較這些表格位置的架構和分割結構與原始表格架構和分割結構。
解決問題
更新分割區結構
如果問題是由分割區結構不一致引起的,請手動或以程式設計方式重新命名結構,以使其一致。
排除特定檔案
AWS Glue 可能會因為下列原因之一而跳過某個分割區:
如果 AWS Glue 由於這些原因之一跳過某個分割區且資料表中不需要該資料,請完成以下其中一項動作:
- 使用排除模式跳過任何不需要的檔案。如需詳細資訊,請參閱選擇資料來源和分類器。
- 將不需要的檔案移動到其他位置。
合併相容的結構描述
如果您的資料在不同的輸入檔案中具有相似的結構描述,則在建立編目程式時會組合相容的結構描述。在 Configure the crawler's output (設定編目程式的輸出) 頁面中的 Grouping behavior for S3 data (optional) (S3 資料的分組行為 (選用)) 下,選取 Create a single schema for each S3 path (為每個 S3 路徑建立單一結構描述)。當您開啟此設定且資料相容時,編目程式會忽略指定路徑中 S3 物件的特定結構描述相似性。如需詳細資訊,請參閱為每個 Amazon S3 包含路徑建立單一結構描述。
防止多個資料表
如果編目程式正在建立多個資料表,請參閱如何防止在 AWS Glue 編目程式執行期間建立多個資料表?