JSONDaten abfragen - Amazon Athena

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.

JSONDaten abfragen

Mit Amazon Athena können Sie JSON -kodierte Daten abfragen, Daten aus verschachtelten Feldern extrahierenJSON, nach Werten suchen und Länge und Größe von Arrays ermitteln. JSON Um die Grundlagen der JSON Datenabfrage in Athena zu erlernen, sollten Sie sich die folgenden Beispielplanetendaten ansehen:

{name:"Mercury",distanceFromSun:0.39,orbitalPeriod:0.24,dayLength:58.65} {name:"Venus",distanceFromSun:0.72,orbitalPeriod:0.62,dayLength:243.02} {name:"Earth",distanceFromSun:1.00,orbitalPeriod:1.00,dayLength:1.00} {name:"Mars",distanceFromSun:1.52,orbitalPeriod:1.88,dayLength:1.03}

Beachten Sie, dass sich jeder Datensatz (im Grunde jede Zeile in der Tabelle) in einer separaten Zeile befindet. Um diese JSON Daten abzufragen, können Sie eine CREATE TABLE Anweisung wie die folgende verwenden:

CREATE EXTERNAL TABLE `planets_json`( `name` string, `distancefromsun` double, `orbitalperiod` double, `daylength` double) ROW FORMAT SERDE 'org.openx.data.jsonserde.JsonSerDe' STORED AS INPUTFORMAT 'org.apache.hadoop.mapred.TextInputFormat' OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.IgnoreKeyTextOutputFormat' LOCATION 's3://amzn-s3-demo-bucket/json/'

Verwenden Sie eine einfache SELECT Anweisung wie das folgende Beispiel, um die Daten abzufragen.

SELECT * FROM planets_json

Die Abfrageergebnisse sehen wie folgt aus.

# Name Entfernung von der Sonne Umlaufzeit Länge des Tages
1 Merkur 0,39 0,24 58,65
2 Venus 0,72 0,62 243,02
3 Erde 1,0 1,0 1,0
4 Mars 1,52 1,88 1,03

Beachten Sie, wie in der CREATE TABLE Anweisung das verwendet wirdOpenX JSON SerDe, was erfordert, dass sich jeder JSON Datensatz in einer separaten Zeile befinden muss. Wenn JSON es sich um ein hübsches Druckformat handelt oder wenn sich alle Datensätze in einer einzigen Zeile befinden, werden die Daten nicht korrekt gelesen.

Um JSON Daten abzufragen, die in einem hübschen Druckformat vorliegen, können Sie Amazon Ion Hive SerDe anstelle von OpenX JSON SerDe das verwenden. Betrachten Sie die vorherigen Daten, die im hübschen Druckformat gespeichert wurden:

{ name:"Mercury", distanceFromSun:0.39, orbitalPeriod:0.24, dayLength:58.65 } { name:"Venus", distanceFromSun:0.72, orbitalPeriod:0.62, dayLength:243.02 } { name:"Earth", distanceFromSun:1.00, orbitalPeriod:1.00, dayLength:1.00 } { name:"Mars", distanceFromSun:1.52, orbitalPeriod:1.88, dayLength:1.03 }

Um diese Daten ohne Neuformatierung abzufragen, können Sie eine CREATE TABLE Anweisung wie die folgende verwenden. Beachten Sie, dass die Anweisung anstelle der Angabe von OpenX JSON SerDe spezifiziertSTORED AS ION.

CREATE EXTERNAL TABLE `planets_ion`( `name` string, `distancefromsun` DECIMAL(10, 2), `orbitalperiod` DECIMAL(10, 2), `daylength` DECIMAL(10, 2)) STORED AS ION LOCATION 's3://amzn-s3-demo-bucket/json-ion/'

Die Abfrage SELECT * FROM planets_ion liefert dieselben Ergebnisse wie zuvor. Weitere Informationen zum Erstellen von Tabellen auf diese Weise mithilfe von Amazon Ion Hive finden Sie SerDe unterAmazon Ion-Tabellen erstellen.

Die obigen JSON Beispieldaten enthalten keine komplexen Datentypen wie verschachtelte Arrays oder Strukturen. Weitere Hinweise zum Abfragen JSON verschachtelter Daten finden Sie unter. Beispiel: Deserialisieren von Nested JSON