

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 對資料表錯誤進行疑難排解
<a name="notebooks-spark-troubleshooting-tables"></a>

使用本節中的資訊，對 Athena for Spark 資料表錯誤進行疑難排解。

## 建立資料表時無法建立路徑錯誤
<a name="notebooks-spark-troubleshooting-tables-illegal-argument-exception"></a>

**錯誤訊息**：IllegalArgumentException: Cannot create a path from an empty string. (IllegalArgumentException：無法從空字串建立路徑。)

**原因**：當您在 Athena 中使用 Apache Spark 在 AWS Glue 資料庫中建立資料表，且資料庫具有空白`LOCATION`屬性時，可能會發生此錯誤。

**建議的解決方案**：如需詳細資訊和解決方案，則請參閱 [建立資料表時的非法引數例外狀況](notebooks-spark-known-issues.md#notebooks-spark-known-issues-illegal-argument-exception)

## 查詢 AWS Glue 資料表時的 AccessDeniedException
<a name="notebooks-spark-troubleshooting-tables-glue-access-denied"></a>

**錯誤訊息**：pyspark.sql.utils.AnalysisException: Unable to verify existence of default database: com.amazonaws.services.glue.model.AccessDeniedException: User: arn:aws:sts::*aws-account-id*:assumed-role/AWSAthenaSparkExecutionRole-*unique-identifier*/AthenaExecutor-*unique-identifier* is not authorized to perform: glue:GetDatabase on resource: arn:aws:glue:*aws-region*:*aws-account-id*:catalog because no identity-based policy allows the glue:GetDatabase action (Service: AWSGlue; Status Code: 400; Error Code: AccessDeniedException; Request ID: *request-id*; Proxy: null)

**原因**：已啟用 Spark 的工作群組的執行角色缺少存取 AWS Glue 資源的許可。

**建議的解決方案**：若要解決此問題，請授予執行角色對 AWS Glue 資源的存取權，然後編輯 Amazon S3 儲存貯體政策，以授予對執行角色的存取權。

下列程序更詳細地說明了這些步驟。

**授予執行角色對 AWS Glue 資源的存取權**

1. 前往 [https://console.aws.amazon.com/athena/](https://console.aws.amazon.com/athena/home) 開啟 Athena 主控台。

1. 如果未顯示主控台的導覽窗格，請選擇左側的展開選單。  
![\[選擇展開選單。\]](http://docs.aws.amazon.com/zh_tw/athena/latest/ug/images/nav-pane-expansion.png)

1. 在 Athena 主控台導覽窗格中，選擇 **Workgroups** (工作群組)。

1. 在 **Workgroups** (工作群組) 頁面上，請選擇您要檢視的工作群組連結。

1. 在工作群組的 **Overview Details** (概觀詳細資訊) 頁面上，選擇 **Role ARN** (角色 ARN) 連結。此連結會在 IAM 主控台中開啟 Spark 執行角色。

1. 在 **Permissions policies** (許可政策) 區段中，選擇連結角色政策名稱。

1. 選擇 **Edit policy** (編輯政策)，然後選擇 **JSON**。

1. 將 AWS Glue 存取權新增至角色。通常，您可以為 `glue:GetDatabase` 和 `glue:GetTable` 動作新增許可。如需有關設定 IAM 角色的詳細資訊，請參閱《IAM 使用者指南》中的[新增和移除 IAM 身分許可](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage-attach-detach.html)。

1. 選擇 **Review policy (檢閱政策)**，然後選擇 **Save changes (儲存變更)**。

1. 編輯 Amazon S3 儲存貯體政策，以授予執行角色存取權。請注意，您必須授予角色儲存貯體和儲存貯體中的物件存取權。如需相關步驟，請參閱《Amazon Simple Storage Service 使用者指南》中的[使用 Amazon S3 主控台新增儲存貯體政策](https://docs.aws.amazon.com/AmazonS3/latest/userguide/add-bucket-policy.html)。