Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Questa pagina descrive come creare uno schema da file CSV che contengono virgolette attorno ai valori dei dati per ogni colonna o da file CSV che includono valori di intestazione. AWS Glue
Gestione dei dati CSV racchiusi tra virgolette
Supponiamo che un file CSV contenga campi di dati racchiusi tra virgolette, come nell'esempio seguente.
"John","Doe","123-555-1231","John said \"hello\""
"Jane","Doe","123-555-9876","Jane said \"hello\""
Per eseguire una query in Athena su una tabella creata da un file CSV contenente valori tra virgolette, è necessario modificare le proprietà della tabella in AWS Glue modo da utilizzare Open De. CSVSer Per ulteriori informazioni su OpenCSV SerDe, vedere. Apri CSV SerDe per l'elaborazione di CSV
Per modificare le proprietà delle tabelle nella console AWS Glue
-
Nel riquadro di navigazione della AWS Glue console, scegli Tabelle.
-
Scegli il collegamento per la tabella che desideri modificare, quindi scegli Actions (Operazioni), Edit table details (Modifica tabella).
-
Nella pagina Edit table (Modifica tabella), apporta le modifiche seguenti:
-
Per Serialization lib (Libreria serializzazione), inserisci
org.apache.hadoop.hive.serde2.OpenCSVSerde
. -
Per Parametri Serde, inserisci i seguenti valori per le chiavi
escapeChar
,quoteChar
eseparatorChar
:-
Per
escapeChar
, inserire una barra rovesciata (\
). -
Per
quoteChar
, inserire una virgoletta doppia ("
). -
Per
separatorChar
, inserire una virgola (,
).
-
-
-
Seleziona Salva.
Per ulteriori informazioni, consulta la sezione relativa alla visualizzazione e modifica dei dettagli tabella nella Guida per sviluppatori AWS Glue .
Puoi anche aggiornare le proprietà AWS Glue delle tabelle a livello di codice. Utilizzate l'operazione AWS Glue UpdateTableAPI o il AWS CLI comando update-table per modificare il SerDeInfo
blocco nella definizione della tabella, come nel seguente esempio JSON.
"SerDeInfo": {
"name": "",
"serializationLib": "org.apache.hadoop.hive.serde2.OpenCSVSerde",
"parameters": {
"separatorChar": ","
"quoteChar": "\""
"escapeChar": "\\"
}
},
Gestione dei file CSV con intestazioni
Quando definisci una tabella in Athena con un'istruzione CREATE TABLE
, puoi utilizzare la proprietà tabella skip.header.line.count
per ignorare gli header nei dati CSV, come nell'esempio seguente.
...
STORED AS TEXTFILE
LOCATION 's3://amzn-s3-demo-bucket/csvdata_folder
/';
TBLPROPERTIES ("skip.header.line.count"="1")
In alternativa, puoi rimuovere gli header CSV in anticipo in modo che le informazioni degli header non siano incluse nei risultati delle query di Athena di Athena. Un metodo per procedere è utilizzare i processi AWS Glue che eseguono le operazioni di estrazione, trasformazione e caricamento (ETL). È possibile scrivere script AWS Glue utilizzando un linguaggio che è un'estensione del dialetto PySpark Python. Per ulteriori informazioni, consulta Authoring Jobs in AWS Glue nella AWS Glue Developer Guide.
L'esempio seguente mostra una funzione in AWS Glue uno script che scrive un frame dinamico utilizzando from_options
e imposta l'opzione writeHeader
format su false, che rimuove le informazioni di intestazione:
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")