Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Arbeiten mit CSV-Daten in AWS Glue
Auf dieser Seite wird beschrieben, wie Sie AWS Glue verwenden um ein Schema aus CSV-Dateien zu erstellen, in denen die Datenwerte für jede Spalte in Anführungszeichen gesetzt sind, oder aus CSV-Dateien, die Kopfzeilenwerte enthalten.
Umgang mit CSV-Daten in Anführungszeichen
Angenommen, eine CSV-Datei enthält Datenfelder, die in doppelte Anführungszeichen gesetzt sind, wie im folgenden Beispiel.
"John","Doe","123-555-1231","John said \"hello\""
"Jane","Doe","123-555-9876","Jane said \"hello\""
Um eine Abfrage in Athena für eine Tabelle auszuführen, die aus einer CSV-Datei mit Werten in Anführungszeichen erstellt wurde, müssen Sie die Tabelleneigenschaften in AWS Glue ändern, um OpenCSVSerDe zu verwenden. Weitere Informationen zum OpenCSV SerDe finden Sie unter Open CSVSer De für CSV-Verarbeitung.
Tabelleneigenschaften in der AWS Glue-Konsole bearbeiten
-
Wählen Sie im Navigationsbereich der AWS Glue-Konsole Tables aus.
-
Wählen Sie den Link für die Tabelle, die Sie bearbeiten möchten. Wählen Sie dann Action (Aktion), Edit table (Tabelle bearbeiten).
-
Auf der Seite Edit table (Tabelle bearbeiten) nehmen Sie die folgenden Änderungen vor:
-
Geben Sie für Serialization lib (Serialisierungsbibliothek)
org.apache.hadoop.hive.serde2.OpenCSVSerdeein. -
Geben Sie für Serde-Parameter die folgenden Werte für die Schlüssel
escapeChar,quoteCharundseparatorCharein:-
Geben Sie für
escapeChareinen umgekehrten Schrägstrich (\) ein. -
Geben Sie für
quoteCharein doppeltes Anführungszeichen (") ein. -
Geben Sie für
separatorCharein Komma (,) ein.
-
-
-
Wählen Sie Speichern.
Weitere Informationen finden Sie unter Anzeigen und Bearbeiten von Tabellendetails im AWS Glue-Entwicklerhandbuch.
Sie können AWS Glue-Tabelleneigenschaften auch programmgesteuert aktualisieren. Verwenden Sie die AWS Glue API-Operation UpdateTable oder den AWS CLI-Befehl update-table, um den SerDeInfo-Block in der Tabellendefinition zu ändern, wie im folgenden JSON-Beispiel.
"SerDeInfo": {
"name": "",
"serializationLib": "org.apache.hadoop.hive.serde2.OpenCSVSerde",
"parameters": {
"separatorChar": ","
"quoteChar": "\""
"escapeChar": "\\"
}
},
Umgang mit CSV-Dateien mit Kopfzeilen
Wenn Sie eine Tabelle in Athena mit einer CREATE TABLE-Anweisung definieren, können Sie die Tabelleneigenschaft skip.header.line.count verwenden, um Header in Ihren CSV-Daten zu ignorieren, wie im folgenden Beispiel.
... STORED AS TEXTFILE LOCATION 's3://amzn-s3-demo-bucket/csvdata_folder/'; TBLPROPERTIES ("skip.header.line.count"="1")
Alternativ können Sie die CSV-Überschriften vorher entfernen, damit diese Informationen nicht in den Abfrageergebnissen von Athena enthalten sind. Hierfür können Sie beispielsweise AWS Glue-Aufträge zum Extrahieren, Umwandeln und Laden (Extract, Transform, Load; ETL) verwenden. Sie können in AWS Glue Skripte in einer Sprache schreiben, die eine Erweiterung des PySpark Python-Dialekts ist. Weitere Informationen finden Sie unter Autorisieren von Aufträgen in AWS Glue im AWS Glue-Entwicklerhandbuch.
Das folgende Beispiel zeigt eine Funktion in einem AWS Glue-Skript, mit der ein dynamischer Frame mit from_options geschrieben und die Formatoption writeHeader auf "false" gesetzt wird, um die Überschriften zu entfernen:
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")