

# Athena의 문제 해결
<a name="troubleshooting-athena"></a>

Athena 팀은 고객이 제기한 문제로부터 다음과 같은 문제 해결 정보를 수집했습니다. 종합적이지는 않지만 일반적인 성능, 시간 초과, 메모리 부족 문제에 대한 조언이 포함되어 있습니다.

**Topics**
+ [CREATE TABLE AS SELECT(CTAS)](#troubleshooting-athena-create-table-as-select-ctas)
+ [데이터 파일 문제](#troubleshooting-athena-data-file-issues)
+ [Linux Foundation Delta Lake 테이블](#troubleshooting-athena-delta-lake-tables)
+ [페더레이션 쿼리](#troubleshooting-athena-federated-queries)
+ [JSON 관련 오류](#troubleshooting-athena-json-related-errors)
+ [MSCK REPAIR TABLE](#troubleshooting-athena-msck-repair-table)
+ [출력 문제](#troubleshooting-athena-output-issues)
+ [Parquet 문제](#troubleshooting-athena-parquet-issues)
+ [파티셔닝 문제](#troubleshooting-athena-partitioning-issues)
+ [권한](#troubleshooting-athena-permissions)
+ [쿼리 구문 문제](#troubleshooting-athena-query-syntax-issues)
+ [쿼리 시간 초과 문제](#troubleshooting-athena-query-timeout-issues)
+ [제한(Throttling) 문제](#troubleshooting-athena-throttling-issues)
+ [보기](#troubleshooting-athena-views)
+ [작업 그룹](#troubleshooting-athena-workgroups)
+ [추가 리소스](#troubleshooting-athena-additional-resources)
+ [Athena 오류 카탈로그](error-reference.md)

## CREATE TABLE AS SELECT(CTAS)
<a name="troubleshooting-athena-create-table-as-select-ctas"></a>

### Duplicated data occurs with concurrent CTAS statements
<a name="troubleshooting-athena-duplicated-data-occurs-with-concurrent-ctas-statements"></a>

Athena는 CTAS에 대한 동시 검증을 관리하지 않습니다. 동시에 같은 위치에 대해 실행되는 중복된 CTAS 문이 있는지 확인하세요. CTAS 또는 INSERT INTO 문이 실패하더라도 분리된(orphaned) 데이터가 해당 문에 지정된 데이터 위치에 남아있을 수 있습니다.

### HIVE\$1TOO\$1MANY\$1OPEN\$1PARTITIONS
<a name="troubleshooting-athena-ctas-hive-too-many-open-partitions"></a>

CTAS 문을 사용하여 파티션이 100개 이상인 테이블을 만들면 “HIVE\$1TOO\$1MANY\$1OPEN\$1PARTITIONS: 파티션/버킷에 대해 열린 작성자 100개를 초과했습니다” 오류가 발생할 수 있습니다. 이러한 제한은 CTAS 문과 일련의 `INSERT INTO` 문(각각 최대 100개의 파티션 생성 또는 삽입)을 사용하여 해결할 수 있습니다. 자세한 내용은 [CTAS 및 INSERT INTO를 사용하여 100개 파티션 한도 문제 해결](ctas-insert-into.md) 섹션을 참조하세요.

## 데이터 파일 문제
<a name="troubleshooting-athena-data-file-issues"></a>

### Athena cannot read hidden files
<a name="troubleshooting-athena-athena-cannot-read-hidden-files"></a>

Athena는 밑줄(\$1) 또는 점(.)으로 시작하는 소스 파일을 숨김으로 처리합니다. 이 제한을 해결하려면 파일 이름을 바꿉니다.

### Athena reads files that I excluded from the AWS Glue crawler
<a name="troubleshooting-athena-athena-reads-files-that-i-excluded-from-the-glue-crawler"></a>

Athena는 사용자가 AWS Glue 크롤러에 지정하는 [제외 패턴](https://docs.aws.amazon.com/glue/latest/dg/define-crawler.html#crawler-data-stores-exclude)을 인식하지 못합니다. 예를 들어 `.csv` 및 `.json` 파일이 모두 포함된 Amazon S3 버킷이 있는데 `.json` 파일을 크롤러에서 제외한다면 Athena는 두 파일 그룹을 모두 쿼리합니다. 이 문제를 방지하려면 제외할 파일을 다른 위치에 배치하면 됩니다.

### HIVE\$1BAD\$1DATA: Error parsing field value
<a name="troubleshooting-athena-hive_bad_data-error-parsing-field-value"></a>

다음과 같은 상황에서 이 오류가 발생할 수 있습니다.
+ 테이블에 정의된 데이터 형식이 원본 데이터와 일치하지 않거나 한 필드에 서로 다른 형식의 데이터가 포함된 경우. 권장되는 해결 방법은 AWS 지식 센터의 ["HIVE\$1BAD\$1DATA: 필드 X: 입력 문자열: "12312845691"에 대해 필드 값을 구문 분석하는 동안 오류 발생" 오류와 함께 Amazon Athena 쿼리 실패](https://aws.amazon.com/premiumsupport/knowledge-center/athena-hive-bad-data-parsing-field-value/)를 참조하세요.
+ Null 값이 정수 필드에 존재하는 경우. 한 가지 해결 방법은 null 값을 포함한 열을 `string`으로 생성한 다음 `CAST`를 사용하여 쿼리의 필드를 변환하면서 null에 대해 기본값 `0`을 부여하는 것입니다. 자세한 내용은 AWS 지식 센터의 [Athena에서 CSV 데이터를 쿼리하는 경우 "HIVE\$1BAD\$1DATA: Error parsing field value '' for field X: For input string: """ 오류가 발생합니다](https://aws.amazon.com/premiumsupport/knowledge-center/athena-hive-bad-data-error-csv/)를 참조하세요.

### HIVE\$1CANNOT\$1OPEN\$1SPLIT: Error opening Hive split s3://amzn-s3-demo-bucket
<a name="troubleshooting-athena-hive_cannot_open_split-error-opening-hive-split-s3bucket-name"></a>

이 오류는 많은 수의 객체가 있는 Amazon S3 버킷 접두사를 쿼리할 때 발생할 수 있습니다. 자세한 내용은 AWS 지식 센터의 [Athena에서 ‘HIVE\$1CANNOT\$1OPEN\$1SPLIT: Error opening Hive split s3://amzn-s3-demo-bucket/: Slow down’ 오류를 해결하려면 어떻게 해야 하나요?](https://aws.amazon.com/premiumsupport/knowledge-center/hive-cannot-open-split-503-athena/)를 참조하세요.

### HIVE\$1CURSOR\$1ERROR: com.amazonaws.services.s3.model.AmazonS3Exception: The specified key does not exist
<a name="troubleshooting-athena-hive_cursor_error-com.amazonaws.services.s3.model.amazons3exception-the-specified-key-does-not-exist"></a>

이 오류는 일반적으로 쿼리 실행 중에 파일이 제거되었을 때 발생합니다. 쿼리를 다시 실행하거나, 워크플로를 조사하여 쿼리 실행 중에 다른 작업 또는 프로세스가 파일을 수정하고 있는지에 확인합니다.

### HIVE\$1CURSOR\$1ERROR: Unexpected end of input stream
<a name="troubleshooting-athena-hive_cursor_error-unexpected-end-of-input-stream"></a>

이 메시지는 파일이 손상되었거나 비어 있음을 나타냅니다. 파일의 무결성을 확인하고 쿼리를 다시 실행합니다.

### HIVE\$1FILESYSTEM\$1ERROR: 파일에 대한 잘못된 파일 크기 *1234567*
<a name="troubleshooting-athena-hive_filesystem_error-incorrect-file-size"></a>

이 메시지는 쿼리 계획과 쿼리 실행 간에 파일이 변경되었을 때 발생할 수 있습니다. 일반적으로 Amazon S3 파일이 현재 위치에서 교체될 때 발생합니다. 예를 들어, `PUT`은 객체가 이미 존재하는 키에서 수행됩니다. Athena는 쿼리가 실행 중일 때 파일의 내용을 삭제하거나 바꾸는 것을 지원하지 않습니다. 이 오류를 방지하려면 쿼리가 실행되지 않을 때 파일을 덮어쓰거나 삭제하는 작업을 예약하거나 새 파일이나 파티션에만 데이터를 씁니다.

### HIVE\$1UNKNOWN\$1ERROR: Unable to create input format
<a name="troubleshooting-athena-hive_unknown_error-unable-to-create-input-format"></a>

이 오류는 다음과 같은 문제로 인해 발생할 수 있습니다.
+ AWS Glue Crawler가 데이터 형식을 분류할 수 없는 경우
+ 특정 AWS Glue 테이블 정의 속성이 비어 있는 경우
+ Athena가 Amazon S3에 있는 파일의 데이터 형식을 지원하지 않는 경우

자세한 내용은 AWS 지식 센터의 [Athena에서 “입력 형식을 생성할 수 없음” 오류를 해결하려면 어떻게 해야 합니까?](https://aws.amazon.com/premiumsupport/knowledge-center/athena-unable-to-create-input-format/)를 참조하거나 지식 센터 [동영상](https://www.youtube.com/watch?v=CGzXW3hRa8g)을 시청하세요.

### 쿼리 결과를 저장하기 위해 제공된 S3 위치가 잘못되었습니다.
<a name="troubleshooting-athena-the-s3-location-provided-to-save-your-query-results-is-invalid."></a>

쿼리 결과에 대해 유효한 S3 위치를 지정했는지 확인합니다. 자세한 내용은 [쿼리 결과 위치 지정](query-results-specify-location.md) 주제에서 [쿼리 결과 및 최근 쿼리 작업](querying.md) 단원을 참조하세요.

## Linux Foundation Delta Lake 테이블
<a name="troubleshooting-athena-delta-lake-tables"></a>

### Delta Lake 테이블 스키마가 동기화되지 않음
<a name="troubleshooting-athena-delta-lake-table-schema-out-of-sync"></a>

AWS Glue에 오래된 스키마가 있는 Delta Lake 테이블을 쿼리하면 다음과 같은 오류 메시지가 나타날 수 있습니다.

```
INVALID_GLUE_SCHEMA: Delta Lake table schema in Glue does not match the most recent schema of the 
Delta Lake transaction log. Please ensure that you have the correct schema defined in Glue.
```

스키마를 Athena에 추가한 후 AWS Glue에서 수정하면 스키마가 오래될 수 있습니다. 스키마를 업데이트하려면 다음 단계 중 하나를 수행하세요.
+ AWS Glue에서 [AWS Glue 크롤러](https://docs.aws.amazon.com/glue/latest/dg/add-crawler.html)를 실행합니다.
+ Athena에서 [테이블을 삭제](drop-table.md)하고 다시 [생성](create-table.md)합니다.
+ Athena에서 [ALTER TABLE ADD COLUMNS](alter-table-add-columns.md) 문을 사용하거나 [AWS Glue에서 테이블 스키마를 편집](https://docs.aws.amazon.com/glue/latest/dg/console-tables.html#console-tables-details)하여 누락된 열을 수동으로 추가합니다.

## 페더레이션 쿼리
<a name="troubleshooting-athena-federated-queries"></a>

### ListTableMetadata 호출 중 제한 시간 초과
<a name="troubleshooting-athena-federated-queries-list-table-metadata-timeout"></a>

데이터 소스에 테이블이 많거나 데이터 소스가 느리거나 네트워크 속도가 느린 경우 [ListTableMetadata](https://docs.aws.amazon.com/athena/latest/APIReference/API_ListTableMetadata.html) API 호출 제한 시간이 초과될 수 있습니다. 이 문제를 해결하려면 다음 단계를 시도합니다.
+ **테이블 수 확인** - 테이블이 1,000개가 넘으면 테이블 수를 줄여봅니다. 가장 빠른 `ListTableMetadata` 응답을 얻으려면 카탈로그당 테이블 수를 1,000개 미만으로 줄이는 것이 좋습니다.
+ **Lambda 구성 확인** - Lambda 함수 동작을 모니터링하는 것은 중요합니다. 페더레이션된 카탈로그를 사용하는 경우 Lambda 함수의 실행 로그를 검토해야 합니다. 결과에 따라 메모리와 제한 시간 값을 적절히 조정합니다. 제한 시간과 관련된 잠재적 문제를 식별하려면 Lambda 구성을 다시 확인합니다. 자세한 내용은 *AWS Lambda 개발자 안내서*의 [Lambda 함수 시간 제한 구성(콘솔)](https://docs.aws.amazon.com/lambda/latest/dg/configuration-function-common.html#configuration-timeout-console)을 참조하세요.
+ **페더레이션된 데이터 소스 로그 확인** - 페더레이션된 데이터 소스의 로그와 오류 메시지를 검사하여 문제나 오류가 있는지 확인합니다. 로그는 제한 시간 초과의 원인에 대한 소중한 인사이트를 제공할 수 있습니다.
+ **`StartQueryExecution`을 사용하여 메타데이터 가져오기** – 테이블이 1,000개가 넘는 경우 페더레이션 커넥터를 사용하여 메타데이터를 검색하는 데 예상보다 오래 걸릴 수 있습니다. [StartQueryExecution](https://docs.aws.amazon.com/athena/latest/APIReference/API_StartQueryExecution.html)의 비동기적 특성으로 인해 Athena는 가장 최적의 방식으로 쿼리를 실행하므로 `ListTableMetadata` 대신 `StartQueryExecution`을 사용하는 것이 좋습니다. 다음 AWS CLI 예제에서는 `ListTableMetadata` 대신 `StartQueryExecution`을 사용하여 데이터 카탈로그에 있는 테이블의 모든 메타데이터를 가져오는 방법을 보여줍니다.

  먼저 다음 예제와 같이 모든 테이블을 가져오는 쿼리를 실행합니다.

  ```
  aws athena start-query-execution --region us-east-1 \
  --query-string "SELECT table_name FROM information_schema.tables LIMIT 50" \
  --work-group "your-work-group-name"
  ```

  그 다음으로, 다음 예제와 같이 개별 테이블의 메타데이터를 검색합니다.

  ```
  aws athena start-query-execution --region us-east-1 \
  --query-string "SELECT * FROM information_schema.columns \
  WHERE table_name = 'your-table-name' AND \
  table_catalog = 'your-catalog-name'" \
  --work-group "your-work-group-name"
  ```

  결과를 얻는 데 걸리는 시간은 카탈로그의 테이블 수에 따라 다릅니다.

페더레이션된 쿼리 문제 해결에 대한 자세한 내용은 GitHub의 awslabs/aws-athena-query-federation 섹션에서 [Common\$1Problems](https://github.com/awslabs/aws-athena-query-federation/wiki/Common_Problems)를 참조하거나 개별 [Athena 데이터 소스 커넥터](connectors-available.md)에 대한 설명서를 참조하세요.

## JSON 관련 오류
<a name="troubleshooting-athena-json-related-errors"></a>

### NULL or incorrect data errors when trying to read JSON data
<a name="troubleshooting-athena-null-or-incorrect-data-errors-when-trying-to-read-json-data"></a>

JSON 데이터를 읽으려고 할 때 NULL 또는 잘못된 데이터 오류는 여러 가지 원인으로 인해 발생할 수 있습니다. OpenX SerDe를 사용할 때 오류를 일으키는 행을 파악하려면 `ignore.malformed.json`을 `true`로 설정합니다. 잘못된 형식의 레코드는 NULL로 반환됩니다. 자세한 내용은 AWS 지식 센터의 [Amazon Athena에서 JSON 데이터를 읽으려고 할 때 오류가 발생하는 이유는 무엇입니까?](https://aws.amazon.com/premiumsupport/knowledge-center/error-json-athena/)를 참조하거나 지식 센터 [동영상](https://youtu.be/ME7Pv1qPFLM)을 시청하세요.

### HIVE\$1BAD\$1DATA: field 0의 필드 값을 구문 분석하는 중 오류 발생: java.lang.String을org.openx.data.jsonserde.json.JSONObject로 캐스팅할 수 없음
<a name="troubleshooting-athena-hive-bad-data-openx-json-serde"></a>

Athena 쿼리에서 열을 구문 분석하지 못할 때 [OpenX JSON SerDe](openx-json-serde.md)에서 이 오류가 발생합니다. 이러한 상황은 `map` 또는 `struct`로 열을 정의했는 데 기초 데이터가 실제로 `string`, `int` 또는 기본 형식일 경우에 발생할 수 있습니다.

### HIVE\$1CURSOR\$1ERROR: Row is not a valid JSON object - JSONException: Duplicate key
<a name="troubleshooting-athena-hive_cursor_error-row-is-not-a-valid-json-object---jsonexception-duplicate-key"></a>

이 오류는 Athena를 사용하여 서로 다른 경우에 동일한 이름의 여러 태그를 사용하는 AWS Config 리소스를 쿼리할 때 발생합니다. 해결 방법은 `WITH SERDEPROPERTIES 'case.insensitive'='false'`를 사용하여 `CREATE TABLE`을 실행하고 이름을 매핑하는 것입니다. `case.insensitive` 및 매핑에 대한 자세한 내용은 [JSON SerDe 라이브러리](json-serde.md) 단원을 참조하세요. 자세한 내용은 AWS 지식 센터의 [Athena에서 AWS Config의 파일을 읽을 때 "HIVE\$1CURSOR\$1ERROR: Row is not a valid JSON Object - JSONException: Duplicate key"를 어떻게 해결해야 합니까?](https://aws.amazon.com/premiumsupport/knowledge-center/json-duplicate-key-error-athena-config/)를 참조하세요.

### 가독성 좋게 꾸민 JSON의 HIVE\$1CURSOR\$1ERROR 메시지
<a name="troubleshooting-athena-json-serde-hive-cursor-error"></a>

[Hive JSON SerDe](hive-json-serde.md) 및 [OpenX JSON SerDe](openx-json-serde.md) 라이브러리에서는 각 JSON 문서가 레코드의 필드를 구분하는 줄 종료 문자가 없는 한 줄의 텍스트에 있을 것으로 예상합니다. JSON 텍스트가 가독성 좋게 꾸민 형식이면 테이블을 만든 후 쿼리하려고 할 때 HIVE\$1CURSOR\$1ERROR: 행이 유효한 JSON 객체가 아님(HIVE\$1CURSOR\$1ERROR: Row is not a valid JSON Object) 또는 HIVE\$1CURSOR\$1ERROR: JsonParseException: 예기치 않은 입력 종료: OBJECT의 닫기 마커 필요(HIVE\$1CURSOR\$1ERROR: JsonParseException: Unexpected end-of-input: expected close marker for OBJECT) 같은 오류 메시지가 나타날 수 있습니다. 자세한 내용은 GitHub의 OpenX SerDe 문서에서 [JSON 데이터 파일](https://github.com/rcongiu/Hive-JSON-Serde#json-data-files)을 참조하세요.

### 여러 JSON 레코드가 SELECT COUNT를 1로 반환함
<a name="troubleshooting-athena-multiple-json-records-return-a-select-count-of-1"></a>

[OpenX JSON SerDe](openx-json-serde.md)를 사용하는 경우 레코드가 줄 바꿈 문자로 구분되어 있는지 확인합니다. 자세한 내용은 AWS 지식 센터의 [입력 JSON 파일에 다수의 레코드가 있는 경우에도 Amazon Athena의 SELECT COUNT 쿼리가 레코드를 1개만 반환합니다](https://aws.amazon.com/premiumsupport/knowledge-center/select-count-query-athena-json-records/)를 참조하세요.

### Cannot query a table created by a AWS Glue crawler that uses a custom JSON classifier
<a name="troubleshooting-athena-cannot-query-a-table-created-by-a-glue-crawler-that-uses-a-custom-json-classifier"></a>

Athena 엔진은 [사용자 지정 JSON 분류자](https://docs.aws.amazon.com/glue/latest/dg/custom-classifier.html#custom-classifier-json)를 지원하지 않습니다. 이 문제를 해결하려면 사용자 지정 분류자를 사용하지 않고 새 테이블을 생성해야 합니다. JSON을 변환하려면 CTAS를 사용하거나 뷰를 생성합니다. 예를 들어 배열로 작업하는 경우 UNNEST 옵션을 사용하여 JSON을 평면화할 수 있습니다. 또 다른 옵션은 사용자 지정 분류자를 지원하는 AWS Glue ETL 작업을 사용해 Amazon S3에서 데이터를 parquet로 변환한 다음 Athena에서 쿼리하는 것입니다.

## MSCK REPAIR TABLE
<a name="troubleshooting-athena-msck-repair-table"></a>

MSCK REPAIR TABLE 관련 문제에 대한 자세한 내용은 [MSCK REPAIR TABLE](msck-repair-table.md) 페이지의 [고려 사항 및 제한 사항](msck-repair-table.md#msck-repair-table-considerations) 및 [문제 해결](msck-repair-table.md#msck-repair-table-troubleshooting) 단원을 참조하세요.

## 출력 문제
<a name="troubleshooting-athena-output-issues"></a>

### Unable to verify/create output bucket
<a name="troubleshooting-athena-unable-to-verifycreate-output-bucket"></a>

지정된 쿼리 결과 위치가 없거나 적절한 사용 권한이 없는 경우 이 오류가 발생할 수 있습니다. 자세한 내용은 AWS 지식 센터의 [Amazon Athena에서 "Unable to verify/create output bucket" 오류를 해결하려면 어떻게 해야 합니까?](https://aws.amazon.com/premiumsupport/knowledge-center/athena-output-bucket-error/)를 참조하세요.

### TIMESTAMP result is empty
<a name="troubleshooting-athena-timestamp-result-is-empty"></a>

Athena에는 Java TIMESTAMP 형식이 필요합니다. 자세한 내용은 AWS 지식 센터의 [Amazon Athena에서 테이블을 쿼리할 때 TIMESTAMP 결과가 비어 있음](https://aws.amazon.com/premiumsupport/knowledge-center/query-table-athena-timestamp-empty/)을 참조하세요.

### Athena 쿼리 출력을 CSV 이외의 형식으로 저장
<a name="troubleshooting-athena-store-athena-query-output-in-a-format-other-than-csv"></a>

기본적으로 Athena는 CSV 형식으로만 파일을 출력합니다. `SELECT` 쿼리의 결과를 다른 형식으로 출력하려면 `UNLOAD` 문을 사용하면 됩니다. 자세한 내용은 [UNLOAD](unload.md) 섹션을 참조하세요. 또한 `format` [테이블 속성](create-table-as.md#ctas-table-properties)을 사용하여 출력 형식을 구성하는 CTAS 쿼리를 사용할 수도 있습니다. `UNLOAD`와 달리, CTAS 기법을 사용하려면 테이블을 만들어야 합니다. 자세한 내용은 AWS 지식 센터의 [Athena 쿼리 출력을 압축 형식과 같은 CSV 이외의 형식으로 저장하려면 어떻게 해야 합니까?](https://aws.amazon.com/premiumsupport/knowledge-center/athena-query-output-different-format/)를 참조하세요.

### The S3 location provided to save your query results is invalid
<a name="troubleshooting-athena-the-s3-location-provided-to-save-your-query-results-is-invalid"></a>

출력 버켓 위치가 쿼리를 실행하는 리전과 동일한 리전에 있지 않은 경우 이 오류 메시지가 나타날 수 있습니다. 이를 방지하려면 쿼리를 실행하는 리전에 쿼리 결과 위치를 지정합니다. 단계는 [쿼리 결과 위치 지정](query-results-specify-location.md)를 참조하세요.

## Parquet 문제
<a name="troubleshooting-athena-parquet-issues"></a>

### org.apache.parquet.io.GroupColumnIO cannot be cast to org.apache.parquet.io.PrimitiveColumnIO
<a name="troubleshooting-athena-org.apache.parquet.io.groupcolumnio-cannot-be-cast-to-org.apache.parquet.io.primitivecolumnio"></a>

이 오류는 parquet 스키마 불일치로 인해 발생합니다. 기본 형식이 아닌 열(예: `array`)이 AWS Glue에서 기본 형식(예: `string`)으로 선언된 것입니다. 이 문제를 해결하려면 파일의 데이터 스키마를 조사하여 AWS Glue에 선언된 스키마와 비교합니다.

### Parquet 통계 문제
<a name="troubleshooting-athena-parquet-statistics-issues"></a>

Parquet 데이터를 읽을 때 다음과 같은 오류 메시지가 나타날 수 있습니다.

```
HIVE_CANNOT_OPEN_SPLIT: Index x out of bounds for length y
HIVE_CURSOR_ERROR: Failed to read x bytes
HIVE_CURSOR_ERROR: FailureException at Malformed input: offset=x
HIVE_CURSOR_ERROR: FailureException at java.io.IOException: 
can not read class org.apache.parquet.format.PageHeader: Socket is closed by peer.
```

이 문제를 해결하려면 다음 예제와 같이 [CREATE TABLE](create-table.md) 또는 [ALTER TABLE SET TBLPROPERTIES](alter-table-set-tblproperties.md) 문을 사용하여 Parquet SerDe `parquet.ignore.statistics` 속성을 `true`로 설정합니다.

CREATE TABLE 예제

```
...
ROW FORMAT SERDE  
'org.apache.hadoop.hive.ql.io.parquet.serde.ParquetHiveSerDe' 
WITH SERDEPROPERTIES ('parquet.ignore.statistics'='true')  
STORED AS PARQUET 
...
```

ALTER TABLE 예제

```
ALTER TABLE ... SET TBLPROPERTIES ('parquet.ignore.statistics'='true')
```

Parquet Hive SerDe에 대한 자세한 내용은 [Parquet SerDe](parquet-serde.md) 섹션을 참조하세요.

## 파티셔닝 문제
<a name="troubleshooting-athena-partitioning-issues"></a>

### MSCK REPAIR TABLE does not remove stale partitions
<a name="troubleshooting-athena-msck-repair-table-does-not-remove-stale-partitions"></a>

Amazon S3에서 파티션을 수동으로 삭제한 다음 MSCK REPAIR TABLE을 실행하면 파일 시스템에서 파티션이 누락됨(Partitions missing from filesystem) 오류 메시지가 나타날 수 있습니다. MSCK REPAIR TABLE은 기한 경과된 파티션을 테이블 메타데이터에서 제거하지 않기 때문입니다. 기한 경과 파티션을 수동으로 제거하려면 [ALTER TABLE DROP PARTITION](alter-table-drop-partition.md)을 사용합니다. 자세한 내용은 [MSCK REPAIR TABLE](msck-repair-table.md) 주제의 “문제 해결” 단원을 참조하세요.

### MSCK REPAIR TABLE failure
<a name="troubleshooting-athena-msck-repair-table-failure"></a>

많은 양의 파티션(예: 100,000개 이상)이 특정 테이블과 연결된 경우 `MSCK REPAIR TABLE`은 메모리 제한 때문에 실패할 수 있습니다. 이 제한을 해결하려면 [ALTER TABLE ADD PARTITION](alter-table-add-partition.md)을 대신 사용합니다.

### MSCK REPAIR TABLE은 파티션을 삭제하지만 AWS Glue에 파티션을 추가하지 않습니다.
<a name="troubleshooting-athena-msck-repair-table-detects-partitions-but-doesnt-add-them-to-glue"></a>

이 문제는 Amazon S3 경로가 소문자가 아닌 카멜 표기법이거나 IAM 정책이 `glue:BatchCreatePartition` 작업을 허용하지 않을 때 발생할 수 있습니다. 자세한 내용은 AWS 지식 센터의 [MSCK REPAIR TABLE이 Athena에서 파티션을 감지하지만 AWS Glue Data Catalog에 파티션을 추가하지 않습니다](https://aws.amazon.com/premiumsupport/knowledge-center/athena-aws-glue-msck-repair-table/)를 참조하세요.

### Partition projection ranges with the date format of dd-MM-yyyy-HH-mm-ss or yyyy-MM-dd do not work
<a name="troubleshooting-athena-partition-projection-ranges-with-the-date-format-of-dd-mm-yyyy-hh-mm-ss-or-yyyy-mm-dd-do-not-work"></a>

올바르게 작동하려면 날짜 형식을 `yyyy-MM-dd HH:00:00`으로 설정해야 합니다. 자세한 내용은 Stack Overflow 게시물 [Athena 파티션 프로젝션이 예상대로 작동하지 않음](https://stackoverflow.com/questions/63943920/athena-partition-projection-not-working-as-expected)을 참조하세요.

### PARTITION BY는 BIGINT 형식을 지원하지 않습니다.
<a name="troubleshooting-athena-partition-by-doesnt-support-the-bigint-type"></a>

데이터 형식을 `string`으로 변환하고 다시 시도하세요.

### No meaningful partitions available
<a name="troubleshooting-athena-no-meaningful-partitions-available"></a>

이 오류 메시지는 일반적으로 파티션 설정이 손상되었음을 의미합니다. 이 문제를 해결하려면 테이블을 삭제하고 새 파티션을 가진 테이블을 만듭니다.

### Partition projection does not work in conjunction with range partitions
<a name="troubleshooting-athena-partition-projection-does-not-work-in-conjunction-with-range-partitions"></a>

시간 범위 단위 [projection.*<columnName>*.interval.unit](partition-projection-supported-types.md#partition-projection-date-type)이 파티션의 구분 기호와 일치하는지 확인합니다. 예를 들어 파티션이 일별로 구분되면 시간 범위 단위가 작동하지 않습니다.

### 범위를 하이픈으로 지정한 경우 파티션 프로젝션 오류 발생
<a name="troubleshooting-athena-partition-projection-range-issue-with-hyphen"></a>

`range` 테이블 속성을 쉼표 대신 하이픈으로 지정하면 다음과 같은 오류가 발생합니다. INVALID\$1TABLE\$1PROPERTY: For input string: "*number*-*number*". 범위 값을 하이픈이 아닌 쉼표로 구분해야 합니다. 자세한 내용은 [정수 형식](partition-projection-supported-types.md#partition-projection-integer-type) 섹션을 참조하세요.

### HIVE\$1UNKNOWN\$1ERROR: Unable to create input format
<a name="troubleshooting-athena-hive_unknown_error-unable-to-create-input-format-1"></a>

하나 이상의 glue 파티션은 서로 다른 형식으로 선언됩니다. 각 glue 파티션은 독립적으로 고유한 입력 형식이 있기 때문입니다. 파티션이 AWS Glue에서 어떻게 정의되어 있는지 확인하세요.

### HIVE\$1PARTITION\$1SCHEMA\$1MISMATCH
<a name="troubleshooting-athena-hive_partition_schema_mismatch"></a>

파티션의 스키마가 테이블의 스키마와 다르면 HIVE\$1PARTITION\$1SCHEMA\$1MISMATCH 오류 메시지와 함께 쿼리가 실패할 수 있습니다.

파티션 열이 있는 AWS Glue 데이터 카탈로그의 각 테이블에 대해 스키마는 테이블 내에 개별 파티션별로 테이블 수준에서 저장됩니다. 파티션 스키마는 파티션 내에서 읽는 데이터 샘플을 기반으로 AWS Glue 크롤러에 의해 채워집니다.

Athena가 쿼리를 실행하면 쿼리에 필요한 모든 파티션의 스키마와 테이블 스키마를 검증합니다. 검증을 통해 열 데이터 형식을 순서대로 비교하고, 중복되는 열에 대해 일치하도록 합니다. 그러면 테이블 중간에서 열을 추가하거나 제거하는 등의 예기치 않은 작업을 방지할 수 있습니다. 파티션의 스키마가 테이블의 스키마와 다름을 Athena가 감지하게 되면 Athena가 쿼리를 처리하지 못하여 `HIVE_PARTITION_SCHEMA_MISMATCH` 메시지와 함께 실패할 수도 있습니다.

이 문제는 몇 가지 방법으로 해결할 수 있습니다. 첫째, 데이터가 실수로 추가된 경우 스키마 차이를 유발하는 데이터 파일을 제거하고 파티션을 삭제한 다음 데이터를 다시 크롤링할 수 있습니다. 둘째, 개별 파티션을 삭제한 다음 Athena 내에서 `MSCK REPAIR`를 실행하여 테이블의 스키마를 사용하여 파티션을 다시 만들 수 있습니다. 이 두 번째 옵션은 적용된 스키마가 계속해서 데이터를 올바르게 읽을 것이 확실한 경우에만 유효합니다.

### SemanticException table is not partitioned but partition spec exists
<a name="troubleshooting-athena-semanticexception-table-is-not-partitioned-but-partition-spec-exists"></a>

`CREATE TABLE` 문에 파티션이 정의되지 않으면 이 오류가 발생할 수 있습니다. 자세한 내용은 AWS 지식 센터의 [Athena에서 "FAILED: SemanticException table is not partitioned but partition spec exists"라는 오류를 어떻게 해결해야 합니까?](https://aws.amazon.com/premiumsupport/knowledge-center/athena-failed-semanticexception-table/)를 참조하세요.

### 0바이트 `_$folder$` 파일
<a name="troubleshooting-athena-alter-table-add-partition-zero-byte-folder-files"></a>

`ALTER TABLE ADD PARTITION` 문을 실행할 때 이미 존재하는 파티션과 잘못된 Amazon S3 위치를 지정하는 경우 Amazon S3에 `partition_value_$folder$` 형식의 0바이트 자리 표시자 파일이 생성됩니다. 이러한 파일은 수동으로 제거해야 합니다.

이러한 일이 발생하지 않도록 하려면 아래와 같이 `ALTER TABLE ADD PARTITION` 문에서 `ADD IF NOT EXISTS` 구문을 사용합니다.

```
ALTER TABLE table_name ADD IF NOT EXISTS PARTITIION […]
```

### Zero records returned from partitioned data
<a name="troubleshooting-athena-zero-records-returned-from-partitioned-data"></a>

이 문제는 여러 가지 이유로 발생할 수 있습니다. 가능한 원인과 해결 방법은 AWS 지식 센터의 [파티션을 정의하여 Amazon Athena에 테이블을 만들었는데 테이블을 쿼리할 때 0개의 레코드가 반환됩니다](https://aws.amazon.com/premiumsupport/knowledge-center/athena-empty-results/)를 참조하세요.

또한 [HIVE\$1TOO\$1MANY\$1OPEN\$1PARTITIONS](#troubleshooting-athena-ctas-hive-too-many-open-partitions) 섹션도 참조하세요.

## 권한
<a name="troubleshooting-athena-permissions"></a>

### Amazon S3 쿼리할 때 Access Denied 오류가 표시됨
<a name="troubleshooting-athena-access-denied-error-when-querying-amazon-s3"></a>

이 오류는 버킷의 데이터를 읽을 권한이 없거나 결과 버킷에 대한 쓰기 권한이 없거나 Amazon S3 경로에 `us-east-1.amazonaws.com` 같은 리전 엔드포인트가 포함된 경우에 발생합니다. 자세한 내용은 AWS 지식 센터의 [Athena 쿼리를 실행하면 "Access Denied" 오류가 나타납니다](https://aws.amazon.com/premiumsupport/knowledge-center/access-denied-athena/)를 참조하세요.

### Amazon S3의 암호화된 데이터에 대해 DDL 쿼리를 실행할 때 Access Denied with Status Code: 403이 표시됨
<a name="troubleshooting-athena-access-denied-error-when-querying-amazon-s3-encrypted"></a>

다음 조건에 해당되면 Access Denied (Service: Amazon S3; Status Code: 403; Error Code: AccessDenied; Request ID: *<request\$1id>*)라는 오류 메시지가 나타날 수 있습니다.

1. `ALTER TABLE ADD PARTITION` 또는 `MSCK REPAIR TABLE` 같은 DDL 쿼리를 실행합니다.

1. [기본 암호화](https://docs.aws.amazon.com/AmazonS3/latest/userguide/default-bucket-encryption.html)가 `SSE-S3`를 사용하도록 구성된 버킷이 있습니다.

1. 이 버킷에는 `PutObject` 요청에서 `PUT` 헤더 `"s3:x-amz-server-side-encryption": "true"` 및 `"s3:x-amz-server-side-encryption": "AES256"`을 지정하도록 하는 다음과 같은 버킷 정책도 있습니다.

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Deny",
               "Principal": "*",
               "Action": "s3:PutObject",
               "Resource": "arn:aws:s3:::<resource-name>/*",
               "Condition": {
                   "Null": {
                       "s3:x-amz-server-side-encryption": "true"
                   }
               }
           },
           {
               "Effect": "Deny",
               "Principal": "*",
               "Action": "s3:PutObject",
               "Resource": "arn:aws:s3:::<resource-name>/*",
               "Condition": {
                   "StringNotEquals": {
                       "s3:x-amz-server-side-encryption": "AES256"
                   }
               }
           }
       ]
   }
   ```

------

이와 같은 경우 권장되는 해결 방법은 버킷의 기본 암호화가 이미 존재한다는 점을 감안하여 위와 같은 버킷 정책을 제거하는 것입니다.

### 다른 계정의 Amazon S3 버킷을 쿼리할 때 Access Denied with Status Code: 403이 표시됨
<a name="troubleshooting-athena-access-denied-with-status-code-403-when-querying-an-amazon-s3-bucket-in-another-account"></a>

이 오류는 다른 AWS 서비스가 작성한 로그를 쿼리할 때 두 번째 계정이 버킷 소유자이지만 버킷의 객체를 소유하지 않은 경우에 발생할 수 있습니다. 자세한 내용은 AWS 지식 센터의 [다른 계정의 버킷을 쿼리할 때 Amazon Athena에서 Amazon S3 예외 "Access Denied with Status Code: 403"이 표시됨](https://aws.amazon.com/premiumsupport/knowledge-center/athena-access-denied-status-code-403/)을 참조하세요.

### IAM 역할 자격 증명을 사용하여 Athena JDBC 드라이버에 연결
<a name="troubleshooting-athena-use-IAM-role-credentials-to-connect-to-the-athena-jdbc-driver"></a>

역할의 임시 자격 증명을 검색하여 [Athena에 대한 JDBC 연결](connect-with-jdbc.md)을 인증할 수 있습니다. 임시 자격 증명의 최대 수명은 12시간입니다. 자세한 내용은 AWS 지식 센터의 [JDBC 드라이버를 사용해 Athena에 연결할 때 IAM 역할 자격 증명을 사용하거나 다른 IAM 역할로 전환하는 방법은 어떻게 되나요?](https://aws.amazon.com/premiumsupport/knowledge-center/athena-iam-jdbc-driver/)를 참조하세요.

### 필수 테이블 스토리지 설명자가 채워지지 않음
<a name="troubleshooting-athena-access-denied-table-storage"></a>

권한이 없는 테이블을 쿼리하거나 보려고 할 때 이 상황이 발생할 수 있습니다. 이를 위한 권장 솔루션은 AWS Lake Formation을 통해 리소스에서 `DESCRIBE` 및 `SELECT` 권한을 부여하는 것입니다. 리소스가 계정 사이에서 공유되는 경우(원래 리소스가 계정 A에 있고 계정 B에 있는 연결된 리소스에 대해 쿼리하려고 함) 역할에 계정 A의 원래 리소스에 대한 `DESCRIBE` 권한과 계정 B의 연결된 리소스에 대한 `SELECT` 권한이 있는지 확인해야 합니다.

## 쿼리 구문 문제
<a name="troubleshooting-athena-query-syntax-issues"></a>

### FAILED: NullPointerException name is null
<a name="troubleshooting-athena-nullpointerexception-name-is-null"></a>

`TableType` 속성을 지정하지 않고 AWS Glue [CreateTable](https://docs.aws.amazon.com/glue/latest/webapi/API_CreateTable.html) API 작업 또는 CloudFormation [https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-glue-table.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-glue-table.html) 템플릿을 사용하여 Athena에서 사용할 테이블을 만든 다음 `SHOW CREATE TABLE` 또는 `MSCK REPAIR TABLE` 같은 DDL 쿼리를 실행하면, 실패: NullPointerException Name이 null임(FAILED: NullPointerException Name is null)이라는 오류 메시지가 표시될 수 있습니다.

이 오류를 해결하려면 AWS Glue `CreateTable` API 호출 또는 [CloudFormation 템플릿](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-table-tableinput.html)의 일부로 [TableInput](https://docs.aws.amazon.com/glue/latest/webapi/API_TableInput.html) `TableType` 속성의 값을 지정하세요. `TableType`의 가능한 값은 `EXTERNAL_TABLE` 또는 `VIRTUAL_VIEW`입니다.

이 요구 사항은 AWS Glue `CreateTable` API 작업 또는 `AWS::Glue::Table` 템플릿을 사용하여 테이블을 만들 때만 적용됩니다. DDL 문이나 AWS Glue 크롤러를 사용하여 Athena용 테이블을 생성할 경우 `TableType` 속성이 자동으로 정의됩니다.

### 함수가 등록되지 않음
<a name="troubleshooting-athena-function-not-registered"></a>

이 오류는 Athena에서 지원하지 않는 함수를 사용하려고 할 때 발생합니다. Athena에서 지원하는 함수 목록은 [Amazon Athena의 함수](functions.md)를 참조하세요. 또는 쿼리 편집기에서 `SHOW FUNCTIONS` 문을 실행하세요. 자체적인 [사용자 정의 함수(UDF)](querying-udf.md)를 작성할 수도 있습니다. 자세한 내용은 AWS 지식 센터의 [Athena에서 ‘함수가 등록되지 않음’이라는 구문 오류를 어떻게 해결합니까?](https://aws.amazon.com/premiumsupport/knowledge-center/athena-syntax-function-not-registered/)를 참조하세요.

### GENERIC\$1INTERNAL\$1ERROR 예외
<a name="troubleshooting-athena-generic-internal-error"></a>

`GENERIC_INTERNAL_ERROR` 예외는 다음과 같은 다양한 원인으로 인해 발생할 있을 수 있습니다.
+ **GENERIC\$1INTERNAL\$1ERROR: Null** – 다음 조건 중 하나에서 이 예외가 나타날 수 있습니다.
  + 테이블 정의에 있는 열의 데이터 형식과 데이터 세트의 실제 데이터 형식 간에 스키마가 일치하지 않습니다.
  + 구문이 부정확한 `CREATE TABLE AS SELECT`(CTAS) 쿼리를 실행 중입니다.
+ **GENERIC\$1INTERNAL\$1ERROR: Parent builder is null** – `array` 데이터 형식의 열이 있는 테이블을 쿼리하고 OpenCSVSerDe 라이브러리를 사용하는 경우 이 예외가 발생할 수 있습니다. OpenCSVerde 형식은 `array` 데이터 형식을 지원하지 않습니다.
+ **GENERIC\$1INTERNAL\$1ERROR: 값이 MAX\$1INT를 초과함(GENERIC\$1INTERNAL\$1ERROR: Value exceeds MAX\$1INT)** – 소스 데이터 열이 `INT` 데이터 형식으로 정의되어 있고 2,147,483,647보다 큰 숫자 값이 열에 있는 경우 이 예외가 표시될 수 있습니다.
+ **GENERIC\$1INTERNAL\$1ERROR: 값이 MAX\$1BYTE를 초과함(GENERIC\$1INTERNAL\$1ERROR: Value exceeds MAX\$1BYTE)** - 소스 데이터 열에 데이터 형식 `BYTE`에 허용되는 크기를 초과하는 숫자 값이 있는 경우 이 예외가 표시될 수 있습니다. `BYTE` 데이터 형식은 `TINYINT`와 동일합니다. `TINYINT`는 2의 보수 형식의 부호 있는 8비트 정수로, 최솟값은 -128이고 최댓값은 127입니다.
+ **GENERIC\$1INTERNAL\$1ERROR: 파티션 값 수가 필터 수와 일치하지 않음(GENERIC\$1INTERNAL\$1ERROR: Number of partition values does not match number of filters)** - Amazon Simple Storage Service(Amazon S3) 데이터에 일관성 없는 파티션이 있는 경우 이 예외가 발생할 수 있습니다. 다음 조건에서는 파티션이 일관되지 않을 수 있습니다.
  + Amazon S3의 파티션이 변경되었습니다(예: 새 파티션이 추가됨).
  + 테이블의 파티션 열 수가 파티션 메타데이터의 열 수와 일치하지 않습니다.

이러한 각 오류에 대한 자세한 내용은 AWS 지식 센터에서 [Amazon Athena 테이블을 쿼리할 때 ‘GENERIC\$1INTERNAL\$1ERROR’ 오류를 해결하려면 어떻게 해야 합니까?](https://aws.amazon.com/premiumsupport/knowledge-center/athena-generic-internal-error/)를 참조하세요.

### 일치하는 그룹 수가 열 수와 일치하지 않습니다.
<a name="troubleshooting-athena-number-of-matching-groups-doesnt-match-the-number-of-columns"></a>

이 오류는 CREATE TABLE 문에 [Regex SerDe](regex-serde.md)를 사용할 때 정규식 일치 그룹의 수가 테이블에 지정한 열 수와 일치하지 않는 경우에 발생합니다. 자세한 내용은 AWS 지식 센터의 [Amazon Athena에서 "Number of matching groups doesn't match the number of columns"라는 RegexSerDe 오류를 해결하려면 어떻게 합니까?](https://aws.amazon.com/premiumsupport/knowledge-center/regexserde-error-athena-matching-groups/)를 참조하세요.

### queryString failed to satisfy constraint: Member must have length less than or equal to 262144
<a name="troubleshooting-athena-querystring-failed-to-satisfy-constraint-member-must-have-length-less-than-or-equal-to-262144"></a>

Athena의 최대 쿼리 문자열 길이(262,144바이트)는 조정 가능한 할당량이 아닙니다. AWS Support에서 할당량을 늘릴 수는 없지만 사용자가 긴 쿼리를 더 작은 쿼리로 분할하여 문제를 해결할 수 있습니다. 자세한 내용은 AWS 지식 센터에서 [Athena의 최대 쿼리 문자열 길이를 늘리려면 어떻게 해야 합니까?](https://aws.amazon.com/premiumsupport/knowledge-center/athena-query-string-length/)를 참조하세요.

### SYNTAX\$1ERROR: Column cannot be resolved
<a name="troubleshooting-athena-syntax_error-column-cannot-be-resolved"></a>

이 오류는 바이트 순서 표시(BOM)가 포함된 UTF-8 인코딩 CSV 파일로부터 AWS Glue 크롤러가 생성한 테이블을 쿼리할 때 발생할 수 있습니다. AWS Glue는 BOM을 인식하지 못하여 이를 물음표로 변경하기 때문에 Amazon Athena에서 이를 인식할 수 없습니다. 해결책은 Athena 또는 AWS Glue에서 물음표를 제거하는 것입니다.

### 함수 호출에 사용하는 인수가 너무 많음
<a name="troubleshooting-athena-too-many-arguments"></a>

Athena 엔진 버전 3에서 함수의 인수는 127개를 초과할 수 없습니다. 이 제한은 설계에 따른 수치입니다. 함수에서 파라미터가 127개를 초과하는 경우 다음과 같은 오류 메시지가 나타납니다.

TOO\$1MANY\$1ARGUMENTS: line *nnn*:*nn*: Too many arguments for function call *function\$1name*().

이 문제를 해결하려면 함수 호출당 파라미터를 더 적게 사용합니다.

## 쿼리 시간 초과 문제
<a name="troubleshooting-athena-query-timeout-issues"></a>

Athena 쿼리에서 시간 초과 오류가 발생하는 경우 CloudTrail 로그를 확인하세요. AWS Glue 또는 Lake Formation API의 제한으로 인해 쿼리 시간이 초과될 수 있습니다. 이러한 오류가 발생하는 경우 해당 오류 메시지는 제한 문제가 아니라 쿼리 시간 초과 문제를 나타낼 수 있습니다. 문제를 해결하려면 지원에 문의하기 전에 CloudTrail 로그를 확인할 수 있습니다. 자세한 내용은 [AWS CloudTrail 로그 쿼리](cloudtrail-logs.md) 및 [AWS CloudTrail을 사용하여 Amazon Athena API 직접 호출 로깅](monitor-with-cloudtrail.md)(을)를 참조하세요.

`ListTableMetadata` API를 직접적으로 호출할 때 페더레이션 쿼리의 쿼리 시간 초과 문제에 대한 자세한 내용은 [ListTableMetadata 호출 중 제한 시간 초과](#troubleshooting-athena-federated-queries-list-table-metadata-timeout) 섹션을 참조하세요.

## 제한(Throttling) 문제
<a name="troubleshooting-athena-throttling-issues"></a>

쿼리가 Amazon S3, AWS KMS, AWS Glue 또는 AWS Lambda와 같은 종속 서비스의 한도를 초과하면 다음 메시지를 예상할 수 있습니다. 이러한 문제를 해결하려면 동일한 계정에서 발생하는 동시 호출 수를 줄여야 합니다.


****  

| 서비스 | 오류 메시지 | 
| --- | --- | 
| AWS Glue | AWSGlueException: 속도를 초과했습니다. | 
| AWS KMS | You have exceeded the rate at which you may call KMS. Reduce the frequency of your calls. | 
| AWS Lambda |  Rate exceeded TooManyRequestsException  | 
| Amazon S3 | AmazonS3Exception: 요청 속도를 줄여야 합니다. | 

Athena를 사용할 때 Amazon S3 제한을 방지하는 방법에 대한 자세한 내용은 [Amazon S3 제한 방지](performance-tuning-s3-throttling.md) 섹션을 참조하세요.

## 보기
<a name="troubleshooting-athena-views"></a>

### Views created in Apache Hive shell do not work in Athena
<a name="troubleshooting-athena-views-created-in-hive-shell-do-not-work-in-athena"></a>

근본적으로 다른 구현이기 때문에 Apache Hive 셸에서 생성된 뷰는 Athena와 호환되지 않습니다. 이 문제를 해결하려면 Athena에서 뷰를 다시 생성합니다.

### View is stale; it must be re-created
<a name="troubleshooting-athena-view-is-stale-it-must-be-re-created"></a>

뷰의 기초가 되는 테이블이 변경되거나 삭제된 경우 이 오류가 나타날 수 있습니다. 해결 방법은 뷰를 다시 생성하는 것입니다. 자세한 내용은 AWS 지식 센터의 [Athena에서 "View is stale; it must be re-created"라는 오류를 어떻게 해결해야 합니까?](https://aws.amazon.com/premiumsupport/knowledge-center/athena-view-is-stale-error/)를 참조하세요.

## 작업 그룹
<a name="troubleshooting-athena-workgroups"></a>

작업 그룹 문제 해결에 대한 자세한 내용은 [작업 그룹 오류 문제 해결](workgroups-troubleshooting.md) 단원을 참조하세요.

## 추가 리소스
<a name="troubleshooting-athena-additional-resources"></a>

다음 페이지에서는 Amazon Athena의 문제 해결을 위한 추가 정보를 제공합니다.
+ [Athena 오류 카탈로그](error-reference.md)
+ [Service Quotas](service-limits.md)
+ [Amazon Athena의 SQL 쿼리에 대한 고려 사항 및 제한 사항](other-notable-limitations.md)
+ [지원되지 않는 DDL](unsupported-ddl.md)
+ [이름 데이터베이스, 테이블 및 열](tables-databases-columns-names.md)
+ [Amazon Athena의 데이터 형식](data-types.md)
+ [데이터에 적합한 SerDe 선택](supported-serdes.md)
+ [Athena에서 압축 사용](compression-formats.md)
+ [쿼리에서 예약어 이스케이프](reserved-words.md)
+ [작업 그룹 오류 문제 해결](workgroups-troubleshooting.md)

다음 AWS 리소스도 도움이 될 수 있습니다.
+  [AWS 지식 센터의 Athena 주제](https://aws.amazon.com/premiumsupport/knowledge-center/#Amazon_Athena) 
+  [AWS re:Post에 대한 Amazon Athena 질문](https://repost.aws/tags/TA78iVOM7gR62_QqDe2-CmiA/amazon-athena)
+  [AWS Big Data Blog( 빅 데이터 블로그)의 Athena 게시물](https://aws.amazon.com/blogs/big-data/tag/amazon-athena/) 

문제 해결에는 종종 전문가 또는 도우미 커뮤니티의 반복적인 질의와 발견이 필요한 경우가 많습니다. 이 페이지에 있는 제안 사항을 시도한 후에도 문제가 계속 발생하면 AWS Support에 문의하거나(AWS Management Console에서 **지원(Support)**, **지원 센터(Support Center)** 클릭) **Amazon Athena** 태그를 사용하여 [AWS re:Post](https://repost.aws/tags/TA78iVOM7gR62_QqDe2-CmiA/amazon-athena)에 대해 질문하세요.

# Athena 오류 카탈로그
<a name="error-reference"></a>

Athena는 실패한 쿼리를 이해하고 쿼리 실패가 발생한 후 조치를 취할 수 있도록 표준화된 오류 정보를 제공합니다. 이 `AthenaError` 기능은 `ErrorCategory` 필드와 `ErrorType` 필드를 포함합니다. `ErrorCategory`는 실패한 쿼리의 원인이 시스템 오류, 사용자 오류 또는 기타 오류로 인한 것인지를 지정합니다. `ErrorType`에서는 오류 원인에 대한 더 세부적인 정보를 제공합니다. 두 필드를 결합하면 주변 상황과 발생한 특정 오류의 원인을 더 잘 이해할 수 있습니다.

## 오류 카탈로그
<a name="error-reference-error-category"></a>

다음 표에는 Athena 오류 범주 값과 그 의미가 나열되어 있습니다.


****  

| 오류 카탈로그 | 소스 | 
| --- | --- | 
| 1 | SYSTEM | 
| 2 | USER | 
| 3 | 기타 | 

## 오류 유형 참조
<a name="error-reference-error-type-reference"></a>

다음 표에는 Athena 오류 유형 값과 그 의미가 나열되어 있습니다.


****  

| 오류 유형 | 설명 | 
| --- | --- | 
| 0 | 이 스케일 팩터에서 쿼리가 리소스를 소진함 | 
| 1 | 이 스케일 팩터에서 쿼리가 리소스를 소진함 | 
| 2 | 이 스케일 팩터에서 쿼리가 리소스를 소진함 | 
| 3 | 이 스케일 팩터에서 쿼리가 리소스를 소진함 | 
| 4 | 이 스케일 팩터에서 쿼리가 리소스를 소진함 | 
| 5 | 이 스케일 팩터에서 쿼리가 리소스를 소진함 | 
| 6 | 이 스케일 팩터에서 쿼리가 리소스를 소진함 | 
| 7 | 이 스케일 팩터에서 쿼리가 리소스를 소진함 | 
| 8 | 이 스케일 팩터에서 쿼리가 리소스를 소진함 | 
| 100 | 내부 서비스 오류 | 
| 200 | 쿼리 엔진에서 내부 오류 발생 | 
| 201 | 쿼리 엔진에서 내부 오류 발생 | 
| 202 | 쿼리 엔진에서 내부 오류 발생 | 
| 203 | 드라이버 오류 | 
| 204 | 메타스토어에 오류 발생 | 
| 205 | 쿼리 엔진에서 내부 오류 발생 | 
| 206 | 쿼리 시간 초과 | 
| 207 | 쿼리 엔진에서 내부 오류 발생 | 
| 208 | 쿼리 엔진에서 내부 오류 발생 | 
| 209 | 쿼리 취소 실패 | 
| 210 | 쿼리 시간 초과 | 
| 211 | 쿼리 엔진에서 내부 오류 발생 | 
| 212 | 쿼리 엔진에서 내부 오류 발생 | 
| 213 | 쿼리 엔진에서 내부 오류 발생 | 
| 214 | 쿼리 엔진에서 내부 오류 발생 | 
| 215 | 쿼리 엔진에서 내부 오류 발생 | 
| 216 | 쿼리 엔진에서 내부 오류 발생 | 
| 217 | 쿼리 엔진에서 내부 오류 발생 | 
| 218 | 쿼리 엔진에서 내부 오류 발생 | 
| 219 | 쿼리 엔진에서 내부 오류 발생 | 
| 220 | 쿼리 엔진에서 내부 오류 발생 | 
| 221 | 쿼리 엔진에서 내부 오류 발생 | 
| 222 | 쿼리 엔진에서 내부 오류 발생 | 
| 223 | 쿼리 엔진에서 내부 오류 발생 | 
| 224 | 쿼리 엔진에서 내부 오류 발생 | 
| 225 | 쿼리 엔진에서 내부 오류 발생 | 
| 226 | 쿼리 엔진에서 내부 오류 발생 | 
| 227 | 쿼리 엔진에서 내부 오류 발생 | 
| 228 | 쿼리 엔진에서 내부 오류 발생 | 
| 229 | 쿼리 엔진에서 내부 오류 발생 | 
| 230 | 쿼리 엔진에서 내부 오류 발생 | 
| 231 | 쿼리 엔진에서 내부 오류 발생 | 
| 232 | 쿼리 엔진에서 내부 오류 발생 | 
| 233 | Iceberg 오류 | 
| 234 | Lake Formation 오류 | 
| 235 | 쿼리 엔진에서 내부 오류 발생 | 
| 236 | 쿼리 엔진에서 내부 오류 발생 | 
| 237 | 직렬화 오류 | 
| 238 | Amazon S3 메타데이터 업로드 실패 | 
| 239 | 일반 지속성 오류 | 
| 240 | 쿼리 제출 실패 | 
| 300 | 내부 서비스 오류 | 
| 301 | 내부 서비스 오류 | 
| 302 | 내부 서비스 오류 | 
| 303 | 내부 서비스 오류 | 
| 400 | 내부 서비스 오류 | 
| 401 | Amazon S3 쿼리 결과 쓰기 실패 | 
| 402 | Amazon S3 쿼리 결과 쓰기 실패 | 
| 1000 | 사용자 오류 | 
| 1001 | 데이터 오류 | 
| 1002 | 데이터 오류 | 
| 1003 | DDL 작업 실패 | 
| 1004 | 스키마 오류 | 
| 1005 | 직렬화 오류 | 
| 1006 | 구문 오류 | 
| 1007 | 데이터 오류 | 
| 1008 | 쿼리가 거부됨 | 
| 1009 | 쿼리 실패 | 
| 1010 | 내부 서비스 오류 | 
| 1011 | 사용자가 쿼리를 취소함 | 
| 1012 | 쿼리 엔진에서 내부 오류 발생 | 
| 1013 | 쿼리 엔진에서 내부 오류 발생 | 
| 1014 | 사용자가 쿼리를 취소함 | 
| 1100 | 잘못된 인수가 제공됨 | 
| 1101 | 잘못된 속성이 제공됨 | 
| 1102 | 쿼리 엔진에서 내부 오류 발생 | 
| 1103 | 잘못된 속성이 제공됨 | 
| 1104 | 쿼리 엔진에서 내부 오류 발생 | 
| 1105 | 쿼리 엔진에서 내부 오류 발생 | 
| 1106 | 잘못된 함수 인수가 제공됨 | 
| 1107 | 잘못된 뷰 | 
| 1108 | 함수 등록 실패 | 
| 1109 | Amazon S3 경로를 찾을 수 없음 | 
| 1110 | 제공된 테이블 또는 뷰가 존재하지 않음 | 
| 1200 | 쿼리가 지원되지 않음 | 
| 1201 | 제공된 디코더는 지원되지 않음 | 
| 1202 | 지원되지 않는 쿼리 유형 | 
| 1300 | 일반적인 찾을 수 없음 오류 | 
| 1301 | 일반 엔터티를 찾을 수 없음 | 
| 1302 | 파일을 찾을 수 없음 | 
| 1303 | 제공된 함수 또는 함수 구현을 찾을 수 없음 | 
| 1304 | 쿼리 엔진에서 내부 오류 발생 | 
| 1305 | 쿼리 엔진에서 내부 오류 발생 | 
| 1306 | Amazon S3 버킷을 찾을 수 없음 | 
| 1307 | 엔진을 찾을 수 없음 | 
| 1308 | 쿼리 엔진에서 내부 오류 발생 | 
| 1400 | 스로틀링 오류 | 
| 1401 | AWS Glue 스로틀링으로 인한 쿼리 실패 | 
| 1402 | AWS Glue의 테이블 버전이 너무 많아서 쿼리에 실패함 | 
| 1403 | Amazon S3 스로틀링으로 인한 쿼리 실패 | 
| 1404 | Amazon Athena 스로틀링으로 인해 쿼리에 실패함 | 
| 1405 | Amazon Athena 스로틀링으로 인해 쿼리에 실패함 | 
| 1406 | Amazon Athena 스로틀링으로 인해 쿼리에 실패함 | 
| 1500 | 권한 오류 | 
| 1501 | Amazon S3 권한 오류 | 
| 1602 |  예약 용량 한도를 초과했습니다. 용량이 부족하여 이 쿼리를 실행할 수 없습니다.  | 
| 1700 | Lake Formation 내부 예외로 인한 쿼리 실패 | 
| 1701 | AWS Glue 내부 예외로 인한 쿼리 실패 | 
| 9999 | 내부 서비스 오류 | 