Je souhaite traiter des fichiers JSON dans ma tâche ETL AWS Glue.
Résolution
Convertir les fichiers JSON dans un autre format
Pour convertir un fichier JSON dans un autre format, utilisez Visual ETL pour créer une tâche ETL AWS Glue. Dans Source de données, choisissez JSON. Dans Cible de données, choisissez le nouveau format de fichier. Choisissez S3 comme type de nœud pour la source de données et la cible de données.
Créer un classificateur JSON pour lire les données JSON imbriquées
Si votre robot AWS Glue doit lire des colonnes imbriquées, créez un classificateur personnalisé défini comme un classificateur JSON. Puis, créez un nouveau robot AWS Glue. Ajoutez le classificateur JSON personnalisé à la liste de classificateurs de votre nouveau robot AWS Glue.
Utilisez l’option justifier pour convertir des colonnes JSON imbriquées en colonnes dans votre tâche ETL AWS Glue. Vous pouvez également utiliser l'option jsonPath dans les valeurs des options de format de la configuration de votre tâche ETL AWS Glue. Pour des exemples de code, consultez Exemple : Lire des fichiers ou des dossiers JSON depuis Amazon Simple Storage Service (Amazon S3).
Utilisez l'option désimbriquer pour convertir les champs imbriqués en objets de niveau supérieur.
Utiliser un robot AWS Glue pour analyser des tableaux JSON
Par défaut, le robot AWS Glue traite les données comme un tableau unique. Pour créer un schéma basé sur chaque enregistrement d'un tableau JSON, créez un classificateur personnalisé JSON. Pour le chemin JSON, entrez $[*]
Lorsque vous utilisez une tâche ETL AWS Glue pour lire un tableau JSON, utilisez la fonction éclater d'Apache Spark pour convertir les tableaux en lignes. Pour plus d'informations, consultez la page pyspark.sql.functions.explode sur le site Web de Spark.
Vous pouvez également utiliser la fonction to_json dans Spark pour convertir des tableaux en chaînes. Pour plus d'informations, consultez la page pyspark.sql.functions.to_json sur le site Web de Spark.
Résoudre les problèmes liés au nombre d'enregistrements DynamicFrame qui ne correspondent pas au nombre d'enregistrements d'une source de données
Si le nombre de DynamicFrame ne correspond pas au nombre d'enregistrements de votre source de données JSON, cela signifie que les données contiennent des enregistrements incorrects. Exécutez la commande errorsAsDynamicFrame suivante pour localiser les enregistrements incorrects dans votre jeu de données :
# View error fields and error data
error_record = dynamicframe_df.errorsAsDynamicFrame().toDF().head()
Définir la valeur multiligne pour lire les enregistrements JSON contenant plusieurs lignes
Si votre enregistrement JSON s'étend sur plusieurs lignes, définissez la valeur multiligne dans les options de format de la configuration de votre tâche ETL AWS Glue sur vrai. Par défaut, la valeur multiligne est définie sur faux.