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 TABLE
istruzione 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'SELECT
istruzione 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 TABLE
istruzione 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 TABLE
istruzione 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