입력 JSON 파일에 다수의 레코드가 있는 경우에도 Amazon Athena의 SELECT COUNT 쿼리가 레코드를 1개만 반환하는 이유가 무엇입니까?

1분 분량
0

SELECT COUNT(*) FROM TABLE을 실행하면 ‘1’이 출력되지만 입력 파일에는 다수의 JSON 레코드가 있습니다. org.openx.data.jsonserde.JsonSerDe를 사용해 테이블을 생성했습니다.

해결 방법

레코드가 줄 바꿈 문자(\n)로 구분되어 있지 않으면 SELECT COUNT(*) FROM TABLE 쿼리에서 ‘1’이 반환됩니다.

예:

{"ID":"1","MYTIMESTAMP":"2020-06-09 17:50:46.267","Name":"John"}{"ID":"2","MYTIMESTAMP":"2020-06-10 17:50:46.267","Name":"Joel"}{"ID":"3","MYTIMESTAMP":"2020-06-10 17:50:46.267","Name":"Patrick"}

이 문제를 해결하려면 다음 예제와 같이 레코드가 \n으로 구분되도록 해야 합니다.

{"ID":"1","MYTIMESTAMP":"2020-06-09 17:50:46.267","Name":"John"}

{"ID":"2","MYTIMESTAMP":"2020-06-10 17:50:46.267","Name":"Joel"}

{"ID":"3","MYTIMESTAMP":"2020-06-10 17:50:46.267","Name":"Patrick"}

이 예의 경우 SELECT COUNT(*) FROM TABLE에서 ‘3’이 반환됩니다.

참고: SerDe에서는 각 JSON 문서가 레코드의 필드를 구분하는 줄 종료 문자가 없는 한 줄의 텍스트에 있는 것으로 가정하고 처리합니다. 자세한 내용은 JSON 데이터 읽기 모범 사례를 참조하세요.


관련 정보

SELECT

테이블 생성

Amazon Athena를 사용하여 SQL 쿼리 실행

AWS 공식
AWS 공식업데이트됨 2년 전
댓글 없음