프리티 프린트 JSON 파일에 대한 Athena 문의를 어떻게 실행해야 하나요?

2분 분량
0

JSON SerDe를 사용하여 프리티 프린트 JSON 파일에서 Amazon Athena 문의를 실행하면 쿼리가 실패하고 다음과 같은 오류 메시지가 표시돼요. “HIVE_CURSOR_ERROR: Row is not a valid JSON Object”(하이브_커서_오류입니다. 열이 유효한 JSON 객체가 아닙니다.)

해결 방법

Athena JSON SerDe는 다음의 파일과 같은 프리티 프린트 JSON 파일을 지원하지 않습니다.

{
    "id": "b179db57-9d5b-40c8-8f07-f75bd1fa1b3c",
    "random_number": 19,
    "categoires": [
        "category 1",
        "category 2"
    ],
    "dict": {
        "name": "category 1",
        "comment": "category 2"
    }
}
{
    "id": "bc4624ce-d752-4e38-8a30-42de158dbc50",
    "random_number": 95,
    "categoires": [
        "category 1",
        "category 2",
        "category 3",
        "category 4"
    ],
    "dict": {
        "name": "category 2",
        "comment": "category 1"
    }
}
{
    "id": "1d3298e8-e3bb-41c0-950c-6a146555ce3c",
    "random_number": 89,
    "categoires": [
        "category 1"
    ],
    "dict": {
        "name": "category 5",
        "comment": "category 3"
    }
}

Amazon Ion은 JSON의 상위 집합이므로 Amazon Ion Hive ](https://docs.aws.amazon.com/athena/latest/ug/ion-serde.html) SerDE를 사용하여 [ Amazon Ion이 아닌 JSON 데이터 세트를 문의하십시오. 다른 JSON SerDe 라이브러리와 달리 Amazon Ion SerDe는 각 데이터열이 한 줄에 있을 것으로 기대하지 않습니다. 이 기능을 사용하여 프리티 프린트 형식의 JSON 데이터세트를 문의하거나 열의 필드를 줄 내림 문자로 분할할 수 있습니다.

1.Athena Ion Hive SerDe를 사용하여 다음과 비슷한 테이블을 생성하세요.

CREATE EXTERNAL TABLE table_name (
    id string,
    random_number int,
    categories array<string>,
    dict struct<name:string, comment:string>
)
STORED AS ION
LOCATION 's3://sample-bucket/prefix/'

2.테이블에 대해 문의:

SELECT * FROM table_name

결과는 다음과 유사하게 표시됩니다.

#	id	random_number	categories	dict
1	b179db57-9d5b-40c8-8f07-f75bd1fa1b3c	19	[category 1, category 2]	{name=category 1, comment=category 2}
2	bc4624ce-d752-4e38-8a30-42de158dbc50	95	[category 1, category 2, category 3, category 4]	{name=category 2, comment=category 1}
3	1d3298e8-e3bb-41c0-950c-6a146555ce3c	89	[category 1]	{name=category 5, comment=category 3}

관련 정보

Amazon Athena에서 JSON 데이터를 읽으려고 할 때 오류가 발생하는 이유는 무엇이나요?

AWS 공식
AWS 공식업데이트됨 일 년 전