JSONDati di interrogazione - Amazon Athena

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à.

JSONDati di interrogazione

Amazon Athena consente di eseguire query su dati JSON codificati, estrarre dati da nestedJSON, cercare valori e trovare la lunghezza e la dimensione degli array. JSON Per apprendere le basi dell'interrogazione dei JSON dati in Athena, considera i seguenti dati planetari di esempio:

{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}

Notate come ogni record (essenzialmente ogni riga della tabella) si trovi su una riga distinta. Per interrogare questi JSON dati, puoi usare un'CREATE TABLEistruzione come la seguente:

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/'

Per interrogare i dati, utilizzate un'SELECTistruzione semplice come nell'esempio seguente.

SELECT * FROM planets_json

I risultati della query sono simili ai seguenti.

# nome distanza dal sole periodo orbitale durata del giorno
1 mercurio 0,39 0,24 58,65
2 Venere 0,72 0,62 243,02
3 Terra 1.0 1.0 1
4 Marte 1,52 1,88 1,03

Notate come l'CREATE TABLEistruzione utilizza ilOpenX JSON SerDe, che richiede che ogni JSON record si trovi su una riga separata. Se il formato di stampa JSON è carino o se tutti i record si trovano su una sola riga, i dati non verranno letti correttamente.

Per interrogare JSON dati in un bel formato di stampa, puoi usare Amazon Ion Hive SerDe invece di OpenX JSON SerDe. Considerate i dati precedenti memorizzati in un grazioso formato di stampa:

{ 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 }

Per interrogare questi dati senza riformattarli, puoi usare un'CREATE TABLEistruzione come la seguente. Notate che, invece di specificare JSON SerDe OpenX, l'istruzione specifica. STORED 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/'

La query SELECT * FROM planets_ion produce gli stessi risultati di prima. Per ulteriori informazioni sulla creazione di tabelle in questo modo utilizzando Amazon Ion Hive SerDe, consultaCrea tabelle Amazon Ion.

I JSON dati di esempio precedente non contengono tipi di dati complessi come array o strutture annidate. Per ulteriori informazioni sull'interrogazione di dati annidati, vedere. JSON Esempio: deserializzazione di nested JSON