Amazon Athena를 사용할 때 발생하는 failed: semanticexception partition spec 문제 해결
안녕하세요 클래스메소드 김재욱(Kim Jaewook) 입니다. 이번에는 Amazon Athena를 사용할 때 발생하는 failed: semanticexception partition spec 문제를 해결하는 방법에 대해서 정리해 봤습니다.
문제 발생
먼저 AWS 공식 문서에서 안내하는 대로 테이블을 생성했습니다.
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
쿼리를 실행했더니, 파티션 문제로 에러가 발생했습니다.
문제 해결
현재 테이블에 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';
이제 다시 쿼리를 실행해 봅시다.
쿼리 실행에 성공한 것을 확인할 수 있습니다.
해당 파티션 문제에 대해서는 아래 문서를 통해 확인할 수 있습니다.
본 블로그 게시글을 읽고 궁금한 사항이 있으신 분들은 jaewookkim533@yahoo.com로 보내주시면 감사하겠습니다.