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.
Bewährte Methoden zum Lesen von JSON-Daten
JavaScript Object Notation (JSON) ist eine gängige Methode zur Kodierung von Datenstrukturen als Text. Viele Anwendungen und Tools geben Daten im JSON-Format aus.
In Amazon Athena können Sie Tabellen aus externen Daten erstellen und die JSON-kodierten Daten darin einschließen. Verwenden Sie für solche Arten von Quelldaten Athena zusammen mit SerDe JSON-Bibliotheken.
Nutzen Sie die folgenden Tipps, um JSON-kodierte Daten zu lesen:
-
Wählen Sie das richtige SerDe, ein natives JSON SerDe oder ein OpenX SerDe,
org.openx.data.jsonserde.JsonSerDe.org.apache.hive.hcatalog.data.JsonSerDeWeitere Informationen finden Sie unter SerDe JSON-Bibliotheken. -
Stellen Sie sicher, dass jeder JSON-codierte Datensatz in einer separaten Zeile dargestellt wird, nicht hübsch gedruckt.
Anmerkung
Das SerDe erwartet, dass sich jedes JSON-Dokument in einer einzigen Textzeile ohne Zeilenabschlusszeichen befindet, die die Felder im Datensatz trennen. Wenn der JSON-Text ein hübsches Druckformat hat, erhalten Sie möglicherweise eine Fehlermeldung wie
HIVE_CURSOR_ERROR: Row is not a valid JSON Object oder HIVE_CURSOR_ERROR:: Unerwartet JsonParseException end-of-input: erwarteter Schließpunkt für OBJECT, wenn Sie versuchen, die Tabelle nach ihrer Erstellung abzufragen. Weitere Informationen finden Sie unter JSON-Datendateienin der SerDe OpenX-Dokumentation unter GitHub. -
Generieren Sie die JSON-kodierten Daten in Spalten (ohne Berücksichtigung von Groß-/Kleinschreibung).
-
Binden Sie eine Option zum Ignorieren fehlerhafter Datensätze (wie in diesem Beispiel) ein.
CREATE EXTERNAL TABLE json_table ( column_a string, column_b int ) ROW FORMAT SERDE 'org.openx.data.jsonserde.JsonSerDe'WITH SERDEPROPERTIES ('ignore.malformed.json' = 'true')LOCATION 's3://amzn-s3-demo-bucket/path/'; -
Konvertieren Sie Felder der Quelldaten, die ein unbestimmtes Schema haben, in JSON-Zeichenfolgen in Athena.
Wenn Athena Tabellen basierend auf JSON-Daten erstellt, werden die Daten basierend auf vorhandenen und vordefinierten Schemata analysiert. Es verfügen jedoch möglicherweise nicht alle Ihre Daten über ein vordefiniertes Schema. Um die Schemaverwaltung in solchen Fällen zu vereinfachen, ist es oft hilfreich, Felder in Quelldaten, die ein unbestimmtes Schema haben, zu JSON-Zeichenfolgen in Athena zu konvertieren und dann SerDe JSON-Bibliotheken zu verwenden.
Nehmen wir als Beispiel eine IoT-Anwendung, die Ereignisse mit gängigen Feldern von verschiedenen Sensoren veröffentlicht. In einem dieser Felder muss eine benutzerdefinierte Nutzlast gespeichert werden, die für den Sensor, der das Ereignis sendet, eindeutig ist. Da Sie in diesem Fall das Schema nicht kennen, empfehlen wir, die Information als JSON-kodierte Zeichenfolge zu speichern. Konvertieren Sie hierfür die Daten in Ihrer Athena-Tabelle in das JSON-Format, wie im folgenden Beispiel dargestellt. Sie können JSON-kodierte Daten auch in Athena-Datentypen konvertieren.