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 쿼리 실행