

# 테이블 오류 해결
<a name="notebooks-spark-troubleshooting-tables"></a>

이 섹션의 정보를 사용하여 Athena for Spark 테이블 오류를 해결합니다.

## 테이블을 생성할 때 경로 오류를 생성할 수 없습니다.
<a name="notebooks-spark-troubleshooting-tables-illegal-argument-exception"></a>

**오류 메시지**: 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/ko_kr/athena/latest/ug/images/nav-pane-expansion.png)

1. Athena 콘솔 탐색 창에서 **작업 그룹(Workgroups)**을 선택합니다.

1. **작업 그룹(Workgroups)** 페이지에서 보려는 작업 그룹의 링크를 선택합니다.

1. 작업 그룹에 대한 **Overview Details**(개요 세부 정보) 페이지에서 **Role ARN**(역할 ARN) 링크를 선택합니다. 링크를 클릭하면 IAM 콘솔에서 Simple 실행 역할이 열립니다.

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) 단원을 참조하세요.