我的 AWS Glue 爬蟲程式失敗,並顯示錯誤「錯誤: 內部服務例外」。
解決方法
爬蟲程式內部服務例外可能是暫時性問題所造成。開始疑難排解之前,請再次執行爬蟲程式。如果您仍然收到內部服務例外,請檢查下列常見問題。
資料問題
如果您的 AWS Glue 爬蟲程式設定為處理大量資料,則爬蟲程式可能會遇到內部服務例外。檢閱要修復的資料出現問題的原因:
- 如果您有大量的小檔案,爬蟲程式可能會失敗,並顯示內部服務例外。為避免此問題,請使用 S3DistCp 工具合併較小的檔案。使用 S3DISCp 時,會產生額外的 Amazon EMR 費用。或者,您可以設定排除模式並反複抓取檔案。最後,請考慮開啟取樣以避免掃描字首內的所有檔案。
- 如果爬蟲程式接近 24 小時逾時值,請分割工作流程以避免記憶體問題。如需詳細資訊,請參閱為什麼 AWS Glue 爬蟲程式長時間執行?
注意: 解決資料大小問題的最佳方法是減少處理的資料量。
Amazon Simple Storage Service (Amazon S3) 資料夾結構不一致
一段時間後,您的 AWS Glue 爬蟲程式會以特定格式遇到資料。不過,上游應用程式中的不一致可能會觸發內部服務例外錯誤。
資料目錄上的資料表分割區定義與 Amazon S3 中的 Hive 分割區結構之間可能存在不一致。這樣的差異可能會導致您的爬蟲程式出現問題。例如,爬蟲程式可能會預期將物件分割為「s3://awsdoc-example-bucket/yyyy=xxxx/mm=xxx/dd=xx/[files]」。但是,假設某些物件位於「s3://awsdoc-example-bucket/yyyy=xxxx/mm=xxx/[files]」下 。發生這種情況時,爬蟲程式會失敗,並擲回內部服務例外狀況錯誤。
如果您修改先前抓取的資料位置,則可能會發生內部服務例外狀況錯誤,其中包含累加抓取。發生這種情況是因為滿足以下條件之一:
- 已知為空的 Amazon S3 位置會以資料檔案更新
- 檔案會從已知已填入資料檔案的 Amazon S3 位置移除
如果您在 Amazon S3 字首結構中進行變更,則會觸發此例外狀況。
如果您認為 S3 資料存放區發生了變更,最佳做法是刪除目前的爬蟲程式。刪除目前的爬蟲程式之後,請使用抓取所有資料夾選項在相同 S3 目標上建立新的爬蟲程式。
AWS Key Management Service (KMS) 問題
如果您的資料存放區設定了 AWS KMS 加密,請檢查下列各項:
- 確認爬蟲程式的 AWS 身份和存取管理 (IAM) 角色具有存取 AWS KMS 金鑰的必要權限。
- 確認您的 AWS KMS 金鑰政策已正確委派權限。
- 確認 AWS KMS 金鑰仍然存在,且處於可用狀態。如果 AWS KMS 金鑰等待刪除,則會觸發內部服務例外狀況。
如需詳細資訊,請參閱在 AWS Glue 主控台上使用安全組態和在 AWS Glue 中設定加密。
AWS Glue Data Catalog 問題
如果您的資料目錄具有大量欄或巢狀結構,則架構大小可能會超過 400 KB 的限制。若要解決與資料目錄相關的例外狀況,請檢查下列項目:
- 確定欄名稱長度不超過 255 個字元,且不包含特殊字元。如需欄需求的詳細資訊,請參閱欄。
- 檢查長度為 0 的欄。如果來源資料中的欄與資料目錄表的資料格式不相符,就會發生這種情況。
- 在資料表的架構定義中,請確定每個資料欄的 Type 值不超過 131,072 個位元組。如果超過此限制,您的爬蟲程式可能會面臨內部服務例外狀況。如需詳細資訊,請參閱欄架構。
- 檢查格式錯誤的資料。例如,如果資料行名稱不符合常規運算式模式 「[\u0020-\uD7FF\uE000-\uFFFD\uD800\uDC00-\uDBFF\uDFFF\t]」,則爬蟲程式將無法運作。
- 如果您的資料包含 (精確度、比例) 格式的 DECIMAL 欄,請確認比例值小於或等於精確度值。
- 您的爬蟲程式可能會失敗,並顯示「無法在目錄中建立資料表」或「請求超出限制的裝載大小」錯誤訊息。發生這種情況時,請監控資料表架構定義的大小。資料目錄中資料表的欄數沒有限制。但是,架構總大小有 400 KB 的限制。大量的資料行會導致架構總大小超過 400 KB 限制。可能的因應措施包括將架構定義分解為多個資料表,以及移除不必要的資料欄。您也可以考量減少資料行名稱來減少中繼資料的大小。
Amazon S3 問題
Amazon DynamoDB 問題
JDBC 問題
- 如果您要抓取使用 AWS KMS 加密的 JDBC 資料來源,請檢查您用於連線的子網路。子網路的路由表必須具有通往 AWS KMS 端點的路由。此路由可透過 AWS KMS 支援的虛擬私有雲端 (VPC) 端點或 NAT 閘道進行。
- 確定您使用的是正確的包含路徑語法。如需詳細資訊,請參閱定義爬蟲程式。
- 如果您要抓取 JDBC 資料存放區,請確認 SSL 連線設定正確。如果您未使用 SSL 連線,請確定在設定爬蟲程式時並未選取需要 SSL 連線。
- 確認 AWS Glue 連線中的資料庫名稱與爬蟲程式包含路徑中的資料庫名稱相符。此外,請務必正確輸入包含路徑。如需詳細資訊,請參閱包括和排除模式。
- 確定您使用的子網路位於 AWS Glue 支援的可用區域中。
- 確定您使用的子網路具有足夠的可用私有 IP 地址。
- 確認內建的 AWS Glue JDBC 驅動程式支援 JDBC 資料來源。
使用 VPC 端點時發生 AWS KMS 問題
- 如果您使用的是 AWS KMS,則 AWS Glue 爬蟲程式必須能夠存取 AWS KMS。若要授予存取權,請在建立 AWS KMS 端點時選取啟用私有 DNS 名稱選項。然後,將 AWS KMS 端點新增至 AWS Glue 連線的 VPC 子網路組態。如需詳細資訊,請參閱透過 VPC 端點連線到 AWS KMS。
相關資訊
在 AWS Glue 主控台上使用爬蟲程式
加密爬蟲程式、作業和開發端點寫入的資料