1. 문제 상황

- with문으로 임시로 subquery를 작성하고 select를 하면서 확인하는 상황

- subquery 결과를 확인하는 도중 에러가 발생

 

2. 해결 방법

- athena에서는 주석이 있는 쿼리라고 해도 마지막 줄에 적어두면 안된다.

 

3. 예시

- 아래와 같은 경우에는 에러가 발생한다.

select * from my_kt1_subset;
-- select * from my_kt2_subset;

 

- 주석이 있어도 마지막 줄이 아닌 다른 줄에 쿼리를 임시로 저장해두자

-- select * from my_kt2_subset;
select * from my_kt1_subset;

1. 문제 상황

- AWS Athena에서 s3에 저장된 parquet 파일로 table을 만들었다.

- 생성은 문제없이 됐으나 "TYPE_MISMATCH: Unable to read parquet data. This is most likely caused by a mismatch between the parquet and metastore schema'"라는 에러 메세지가 발생

 

2. 해결 방법

- CREATE TABLE 관련 AWS 문서를 확인했다.

https://docs.aws.amazon.com/ko_kr/athena/latest/ug/create-table.html

 

CREATE TABLE - Amazon Athena

비 문자열 데이터 유형은 Athena에서 string으로 캐스팅할 수 없습니다. 대신 varchar로 캐스팅합니다.

docs.aws.amazon.com

- date 항목에 아래와 같은 내용이 있었다.

- parquet에 1970-01-01 보다 작은 날짜가 있는지 확인하고 그보다 작은 날짜는 수정했다.

parquet파일을 열어 확인해보니 birth_date에 1970년 보다 작은 날짜가 있다

 

3. 결론

- 날짜 형식을 쓰려면 1970-01-01보다 작은 날짜가 있는지 확인해야 한다.

- timestamp 형식을 쓰는 경우 1970-01-01 보다 큰 날짜 값만 사용하는 것을 상정해야 한다.

- 그보다 작은 날짜를 쓸 일이 있다면 string을 사용하여 날짜를 저장하고 사용하는 것이 좋을 것으로 보인다.

- 예를 들어 string으로 하는 경우 20230810 같은 방식으로 저장하면 된다.

'AWS 문제 해결 기록 > Athena' 카테고리의 다른 글

Only one sql statement is allowed.  (0) 2023.08.23

+ Recent posts