Amazon S3에서 쿼리 출력 파일 찾기 - Amazon Athena

Amazon S3에서 쿼리 출력 파일 찾기

구성이 클라이언트 측 설정을 재정의하는 작업 그룹에서 쿼리가 발생하지 않는 한 쿼리 출력 파일은 다음 경로 패턴으로 Amazon S3의 하위 폴더에 저장됩니다. 작업 그룹 구성이 클라이언트 측 설정을 재정의하는 경우 쿼리는 작업 그룹에서 지정한 결과 경로를 사용합니다.

QueryResultsLocationInS3/[QueryName|Unsaved/yyyy/mm/dd/]
  • QueryResultsLocationInS3는 작업 그룹 설정 또는 클라이언트 측 설정에 따라 지정된 쿼리 결과 위치입니다. 자세한 내용은 이 문서의 후반부에서 쿼리 결과 위치 지정 단원을 참조하세요.

  • 다음 하위 폴더는 작업 그룹 구성에 의해 결과 경로가 재정의되지 않은 콘솔에서 실행되는 쿼리에 대해서만 생성됩니다. AWS CLI에서 실행되거나 Athena API를 사용하는 쿼리는 QueryResultsLocationInS3에 직접 저장됩니다.

    • QueryName은 결과가 저장되는 쿼리의 이름입니다. 쿼리가 실행되었지만 저장되지 않은 경우 Unsaved가 사용됩니다.

    • yyyy/mm/dd는 쿼리가 실행된 날짜입니다.

CREATE TABLE AS SELECT 쿼리와 연결된 파일은 위 패턴의 tables 하위 폴더에 저장됩니다.

쿼리 출력 파일 식별

파일은 쿼리 이름, 쿼리 ID, 쿼리가 실행된 날짜를 기반으로 Amazon S3의 쿼리 결과 위치에 저장됩니다. 각 쿼리에 대한 파일은 QueryID를 사용하여 이름 지정됩니다. QueryID는 쿼리가 실행될 때 Athena가 각 쿼리에 할당하는 고유 식별자입니다.

다음 파일 형식이 저장됩니다.

파일 유형 파일 이름 지정 패턴 설명

쿼리 결과 파일

QueryID.csv

QueryID.txt

DML 쿼리 결과 파일은 CSV(쉼표로 분리된 값) 형식으로 저장됩니다.

DDL 쿼리 결과는 일반 텍스트 파일로 저장됩니다.

콘솔을 사용할 경우 콘솔의 결과 창에서 또는 쿼리 기록에서 결과 파일을 다운로드할 수 있습니다. 자세한 내용은 Athena 콘솔을 사용하여 쿼리 결과 파일 다운로드 단원을 참조하세요.

쿼리 메타데이터 파일

QueryID.csv.metadata

QueryID.txt.metadata

DML 및 DDL 쿼리 메타데이터 파일은 이진 형식으로 저장되며 사람이 읽을 수 없습니다. 파일 확장명은 관련된 쿼리 결과 파일과 같습니다. Athena는 GetQueryResults 작업을 사용해 쿼리 결과를 읽을 때 메타데이터를 사용합니다. 이러한 파일을 삭제할 수 있지만, 쿼리에 대한 중요한 정보가 손실될 수 있기 때문에 파일을 삭제하지 않는 것이 좋습니다.

데이터 매니페스트 파일

QueryID-manifest.csv

INSERT INTO 쿼리가 실행될 때 Athena가 Amazon S3 데이터 원본 위치에서 생성하는 파일을 추적하기 위해 데이터 매니페스트 파일이 생성됩니다. 쿼리가 실패하는 경우 매니페스트는 해당 쿼리가 작성하려고 한 파일도 추적합니다. 매니페스트는 실패한 쿼리에서 발생하는 분리된 파일을 식별하는 데 유용합니다.

AWS CLI를 사용하여 쿼리 출력 위치 및 결과 파일을 식별하려면 다음 예제처럼 aws athena get-query-execution 명령을 실행합니다. abc1234d-5efg-67hi-jklm-89n0op12qr34를 쿼리 ID로 교체합니다.

aws athena get-query-execution --query-execution-id abc1234d-5efg-67hi-jklm-89n0op12qr34

이 명령은 다음과 비슷한 출력을 반환합니다. 각 출력 파라미터에 대한 설명은 AWS CLI 명령 참조get-query-execution을 참조하세요.

{ "QueryExecution": { "Status": { "SubmissionDateTime": 1565649050.175, "State": "SUCCEEDED", "CompletionDateTime": 1565649056.6229999 }, "Statistics": { "DataScannedInBytes": 5944497, "DataManifestLocation": "s3://amzn-s3-demo-bucket/athena-query-results-123456789012-us-west-1/MyInsertQuery/2019/08/12/abc1234d-5efg-67hi-jklm-89n0op12qr34-manifest.csv", "EngineExecutionTimeInMillis": 5209 }, "ResultConfiguration": { "EncryptionConfiguration": { "EncryptionOption": "SSE_S3" }, "OutputLocation": "s3://amzn-s3-demo-bucket/athena-query-results-123456789012-us-west-1/MyInsertQuery/2019/08/12/abc1234d-5efg-67hi-jklm-89n0op12qr34" }, "QueryExecutionId": "abc1234d-5efg-67hi-jklm-89n0op12qr34", "QueryExecutionContext": {}, "Query": "INSERT INTO mydb.elb_log_backup SELECT * FROM mydb.elb_logs LIMIT 100", "StatementType": "DML", "WorkGroup": "primary" } }