印刷用に整形された形式の (pretty-print の) JSON ファイルで Athena クエリを実行するにはどうすれば良いですか?

所要時間2分
0

JSON SerDe を使用して、印刷用に整形された形式の (pretty-print の) JSON ファイルで Amazon Athena クエリを実行すると、クエリが失敗し、以下のエラーメッセージが表示されます。 「HIVE_CURSOR_ERROR: 行が有効な JSON オブジェクトではありません。」

解決策

Athena JSON SerDe は、以下のファイルのような印刷用に整形された形式の (pretty-print の) JSON ファイルをサポートしていません。

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

Amazon Ion は JSON のスーパーセットであるため、Amazon Ion Hive SerDe を使って Amazon Ion 以外の JSON データセットをクエリします。Amazon Ion SerDe では、他の JSON SerDe ライブラリとは異なり、データの各行が 1 行内にあることを想定されていません。この機能を使用することで、印刷用に整形された形式の (pretty-print の) 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}

関連情報

JSON データを Amazon Athena 内で 読み取ろうとするとエラーが発生します。なぜですか?

AWS公式
AWS公式更新しました 1年前
コメントはありません

関連するコンテンツ