對 Lake Formation 叢集進行疑難排解 - Amazon EMR

對 Lake Formation 叢集進行疑難排解

本章節會逐步解說將 Amazon EMR 與 AWS Lake Formation 搭配使用時常見問題的疑難排解程序。

不允許存取資料湖

您必須明確選擇在 Amazon EMR 叢集上進行資料篩選,然後才能分析和處理資料湖中的資料。當資料存取失敗時,您將在筆記本項目的輸出中看到一般 Access is not allowed 訊息。

若要選擇加入並允許在 Amazon EMR 上進行資料篩選,請參閱《AWS Lake Formation 開發人員指南》中的允許在 Amazon EMR 上進行資料篩選以取得指示。

工作階段過期

EMR Notebooks 和 Zeppelin 的工作階段逾時是由 Lake Formation 的 Maximum CLI/API session duration IAM 角色所控制。此設定的預設值為 1 小時。當工作階段過期發生時,您會在嘗試執行 Spark SQL 命令時,於筆記本項目的輸出中看到下列訊息。

Error 401 HTTP ERROR: 401 Problem accessing /sessions/2/statements. Reason: JWT token included in request failed validation. Powered by Jetty:// 9.3.24.v20180605 org.springframework.web.client.HttpClientErrorException: 401 JWT token included in request failed validation…

若要驗證您的工作階段,請重新整理頁面。系統會提示您使用 IdP 重新驗證身分,並重新導向回筆記本。您可以在重新驗證之後繼續執行查詢。

請求的資料表上沒有使用者的許可

嘗試存取您無權存取的資料表時,您會在嘗試執行 Spark SQL 命令時,於筆記本項目的輸出中會看到下例外狀況。

org.apache.spark.sql.AnalysisException: org.apache.hadoop.hive.ql.metadata.HiveException: Unable to fetch table table. Resource does not exist or requester is not authorized to access requested permissions. (Service: AWSGlue; Status Code: 400; Error Code: AccessDeniedException; Request ID: …

若要存取資料表,您必須更新 Lake Formation 中與此資料表關聯的許可,將存取權授予使用者。

查詢與 Lake Formation 共用的跨帳戶資料

當您使用 Amazon EMR 存取從其他帳戶與您共用的資料時,部分 Spark 程式庫將嘗試呼叫 Glue:GetUserDefinedFunctions API 操作。由於 AWS RAM 受管許可第 1 版和第 2 版不支援此動作,因此您會收到下列錯誤訊息:

"ERROR: User: arn:aws:sts::012345678901:assumed-role/my-spark-role/i-06ab8c2b59299508a is not authorized to perform: glue:GetUserDefinedFunctions on resource: arn:exampleCatalogResource because no resource-based policy allows the glue:GetUserDefinedFunctions action"

若要解決此錯誤,建立資源共用的資料湖管理員必須更新附接至資源共用的 AWS RAM 受管許可。AWS RAM 受管許可第 3 版允許主體執行 glue:GetUserDefinedFunctions 動作。

如果您建立新的資源共用,Lake Formation 預設會套用最新版本的 AWS RAM 受管許可,且您不需要採取任何動作。若要啟用現有資源共用的跨帳戶資料存取,您需要將 AWS RAM 受管許可更新為第 3 版。

您可以在 AWS RAM 中檢視指派給與您共用的資源的 AWS RAM 許可。第 3 版中包含下列許可:

Databases AWSRAMPermissionGlueDatabaseReadWriteForCatalog AWSRAMPermissionGlueDatabaseReadWrite Tables AWSRAMPermissionGlueTableReadWriteForCatalog AWSRAMPermissionGlueTableReadWriteForDatabase AllTables AWSRAMPermissionGlueAllTablesReadWriteForCatalog AWSRAMPermissionGlueAllTablesReadWriteForDatabase
更新現有資源共用的 AWS RAM 受管許可版本

您 (資料湖管理員) 可以透過遵循《AWS RAM 使用者指南》中的指示將 AWS RAM 受管許可更新至較新版本,也可以撤銷資源類型的所有現有許可並重新授予這些許可。如果您撤銷許可,AWS RAM 會刪除與資源類型關聯的 AWS RAM 資源共用。當您重新授予許可時,AWS RAM 會建立附接最新版 AWS RAM 受管許可的新的資源共用。

插入、建立和更改資料表

不支援在 Lake Formation 政策保護資料庫中插入、建立或更改資料表。當執行這些操作時,您會在嘗試執行 Spark SQL 命令時,於筆記本項目的輸出中看到下列例外狀況。

java.io.IOException: com.amazon.ws.emr.hadoop.fs.shaded.com.amazonaws.services.s3.model.AmazonS3Exception: Access Denied (Service: Amazon S3; Status Code: 403; Error Code: AccessDenied; Request ID: …

如需詳細資訊,請參閱 Amazon EMR 與 AWS Lake Formation 整合的限制