Amazon Athena를 사용할 때 발생하는 failed: semanticexception partition spec 문제 해결

Amazon Athena를 사용할 때 발생하는 failed: semanticexception partition spec 문제 해결

Amazon Athena를 사용할 때 발생하는 failed: semanticexception partition spec 문제를 해결하는 방법에 대해서 정리해 봤습니다.
Clock Icon2025.02.17

안녕하세요 클래스메소드 김재욱(Kim Jaewook) 입니다. 이번에는 Amazon Athena를 사용할 때 발생하는 failed: semanticexception partition spec 문제를 해결하는 방법에 대해서 정리해 봤습니다.

문제 발생

먼저 AWS 공식 문서에서 안내하는 대로 테이블을 생성했습니다.

https://docs.aws.amazon.com/ko_kr/athena/latest/ug/vpc-flow-logs-parquet.html

ALTER TABLE vpc_flow_logs_parquet
ADD PARTITION (`date`='2025-02-17')
LOCATION 's3://{버킷 명}/AWSLogs/{AWS Account}/vpcflowlogs/{Region}/2025/02/17';

이어서 데이터를 갱신하기 위해 상기 쿼리를 입력했습니다.

FAILED: SemanticException Partition spec {date=2025-02-17} contains non-partition columns

쿼리를 실행했더니, 파티션 문제로 에러가 발생했습니다.

jw-athenaerror-1

문제 해결

현재 테이블에 date와 같은 파티션이 존재하지 않는다는 것 같으니 파티션을 확인해 봅시다.

SHOW CREATE TABLE vpc_flow_logs_parquet;

PARTITIONED BY ( 
  `aws-account-id` string, 
  `aws-service` string, 
  `aws-region` string, 
  `year` string, 
  `month` string, 
  `day` string, 
  `hour` string)

결과 값으로는 역시 date라는 파티션이 존재하지 않습니다.

CREATE EXTERNAL TABLE IF NOT EXISTS `vpc_flow_logs_parquet` (
-------------- 생략 --------------

)
PARTITIONED BY (`date` date)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ' '
LOCATION 's3://{S3 버킷 명}/AWSLogs/{AWS Account}/vpcflowlogs/{Region}/'
TBLPROPERTIES ("skip.header.line.count"="1");

테이블을 생성할 때 상기와 같이 date라는 파티션을 설정합니다.

ALTER TABLE vpc_flow_logs_parquet
ADD PARTITION (`date`='2025-02-17')
LOCATION 's3://{버킷 명}/AWSLogs/{AWS Account}/vpcflowlogs/{Region}/2025/02/17';

이제 다시 쿼리를 실행해 봅시다.

jw-athenaerror-2

쿼리 실행에 성공한 것을 확인할 수 있습니다.

해당 파티션 문제에 대해서는 아래 문서를 통해 확인할 수 있습니다.

https://repost.aws/ko/knowledge-center/athena-failed-semanticexception-table

https://docs.aws.amazon.com/ko_kr/athena/latest/ug/troubleshooting-athena.html#troubleshooting-athena-partitioning-issues

본 블로그 게시글을 읽고 궁금한 사항이 있으신 분들은 jaewookkim533@yahoo.com로 보내주시면 감사하겠습니다.

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.