Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Cette page décrit comment créer un schéma AWS Glue à partir de CSV fichiers comportant des guillemets autour des valeurs de données pour chaque colonne ou à partir de CSV fichiers contenant des valeurs d'en-tête.
Traitement des CSV données incluses dans les devis
Supposons qu'un CSV fichier comporte des champs de données placés entre guillemets, comme dans l'exemple suivant.
"John","Doe","123-555-1231","John said \"hello\""
"Jane","Doe","123-555-9876","Jane said \"hello\""
Pour exécuter une requête dans Athena sur une table créée à partir d'un CSV fichier contenant des valeurs entre guillemets, vous devez modifier les propriétés de la table AWS Glue pour utiliser le O penCSVSer De. Pour plus d'informations sur l'Open CSV SerDe, consultezOuvert CSV SerDe pour traitement CSV.
Pour modifier les propriétés du tableau dans la AWS Glue console
-
Dans le volet de navigation de la AWS Glue console, sélectionnez Tables.
-
Choisissez le lien de la table que vous souhaitez modifier, puis sélectionnez Action, Modifier la table.
-
Sur la page Modifier le tableau, procédez au modifications suivantes :
-
Dans la Bibliothèque de sérialisation, saisissez
org.apache.hadoop.hive.serde2.OpenCSVSerde
. -
Pour Serde parameters (Paramètres Serde), saisissez les valeurs suivantes pour les clés
escapeChar
,quoteChar
etseparatorChar
:-
Pour
escapeChar
, saisissez une barre oblique inverse (\
). -
Pour
quoteChar
, saisissez un guillemet double ("
). -
Pour
separatorChar
, saisissez une virgule (,
).
-
-
-
Choisissez Save (Enregistrer).
Pour en savoir plus, consultez Affichage et modification des détails de table dans le Guide du développeur AWS Glue .
Vous pouvez également mettre à jour les propriétés des AWS Glue tables par programmation. Utilisez l' AWS Glue UpdateTableAPIopération ou la AWS CLI commande update-table pour modifier le SerDeInfo
bloc dans la définition de la table, comme dans l'exemple suivantJSON.
"SerDeInfo": {
"name": "",
"serializationLib": "org.apache.hadoop.hive.serde2.OpenCSVSerde",
"parameters": {
"separatorChar": ","
"quoteChar": "\""
"escapeChar": "\\"
}
},
Manipulation de CSV fichiers avec en-têtes
Lorsque vous définissez une table dans Athena à l'aide d'une CREATE TABLE
instruction, vous pouvez utiliser la propriété skip.header.line.count
table pour ignorer les en-têtes de vos CSV données, comme dans l'exemple suivant.
...
STORED AS TEXTFILE
LOCATION 's3://amzn-s3-demo-bucket/csvdata_folder
/';
TBLPROPERTIES ("skip.header.line.count"="1")
Vous pouvez également supprimer les CSV en-têtes au préalable afin que les informations d'en-tête ne soient pas incluses dans les résultats de la requête Athena. L'un des moyens d'y parvenir consiste à utiliser AWS Glue des tâches qui exécutent des tâches d'extraction, de transformation et de chargement (ETL). Vous pouvez écrire des scripts en AWS Glue utilisant un langage qui est une extension du dialecte PySpark Python. Pour plus d'informations, consultez la section Création de tâches dans AWS Glue dans le manuel du AWS Glue développeur.
L'exemple suivant montre une fonction dans un AWS Glue script qui écrit un cadre dynamique en utilisant from_options
et définit l'option de writeHeader
format sur false, ce qui supprime les informations d'en-tête :
glueContext.write_dynamic_frame.from_options(frame = applymapping1, connection_type = "s3", connection_options = {"path": "s3://amzn-s3-demo-bucket/MYTABLEDATA/"}, format = "csv", format_options = {"writeHeader": False}, transformation_ctx = "datasink2")