Comment puis-je exécuter des requêtes Athena pour des fichiers JSON à impression élégante ?

Lecture de 2 minute(s)
0

Lorsque j'exécute des requêtes Amazon Athena sur des fichiers JSON à impression élégante avec JSON SerDe, mes requêtes échouent et le message d'erreur suivant s'affiche : « HIVE_CURSOR_ERROR : La ligne n'est pas d'objet JSON valide ».

Résolution

Athena JSON SerDe ne prend pas en charge les fichiers JSON à impression élégante comme le fichier suivant :

{
    "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 étant un super jeu de JSON, utilisez Amazon Ion Hive SerDe pour interroger des jeux de données JSON autres qu'Amazon Ion. Contrairement aux autres bibliothèques JSON SerDe, Amazon Ion SerDe ne s'attend pas à ce que chaque ligne de données se trouve sur une seule ligne. Utilisez cette fonctionnalité pour interroger des jeux de données JSON dans un format à impression élégante ou pour séparer les champs dans une ligne à l'aide de caractères de saut de ligne.

1.    Créez une table similaire à la suivante avec 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.    Interroger la table :

SELECT * FROM table_name

Le résultat ressemble à celui qui suit :

#	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}

Informations connexes

Pourquoi est-ce que je reçois des messages d'erreurs lorsque j'essaie de lire des données JSON dans Amazon Athena ?

AWS OFFICIEL
AWS OFFICIELA mis à jour il y a un an