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 JSON-SerDe-Bibliotheken.
Nutzen Sie die folgenden Tipps, um JSON-kodierte Daten zu lesen:
-
Wählen Sie den richtigen SerDe aus: einen nativen JSON SerDe,
org.apache.hive.hcatalog.data.JsonSerDeoder einen OpenX SerDe,org.openx.data.jsonserde.JsonSerDe. Weitere Informationen finden Sie unter JSON-SerDe-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 auf einer einzigen Textzeile befindet, ohne Zeilenabschlusszeichen, die die Felder im Datensatz trennen. Wenn der JSON-Text im hübschen Druckformat vorliegt, erhalten Sie möglicherweise eine Fehlermeldung wie
HIVE_CURSOR_ERROR: Zeile ist kein gültiges JSON-ObjektoderHIVE_CURSOR_ERROR: JsonParseException: Unerwartetes Ende der Eingabe: Erwartete Schließmarkierung für OBJEKT, wenn Sie versuchen, die Tabelle abzufragen, nachdem Sie dies erstellt haben. Weitere Informationen finden Sie unter JSON-Datendateiin der OpenX-Serde-Dokumentation auf 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 zu verwenden JSON-SerDe-Bibliotheken.
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.