Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
JSONData kueri
Amazon Athena memungkinkan Anda melakukan kueri data JSON yang disandikan, mengekstrak data dari bersarangJSON, mencari nilai, dan menemukan panjang dan ukuran array. JSON Untuk mempelajari dasar-dasar kueri JSON data di Athena, pertimbangkan contoh data planet berikut:
{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}
Perhatikan bagaimana setiap catatan (pada dasarnya, setiap baris dalam tabel) berada pada baris terpisah. Untuk menanyakan JSON data ini, Anda dapat menggunakan CREATE TABLE
pernyataan seperti berikut:
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/'
Untuk query data, gunakan SELECT
pernyataan sederhana seperti contoh berikut.
SELECT * FROM planets_json
Hasil kueri terlihat seperti berikut ini.
# | name | jarakdarimatahari | periode orbital | panjang hari |
---|---|---|---|---|
1 | Merkuri | 0,39 | 0,24 | 58.65 |
2 | Venus | 0,72 | 0,62 | 243.02 |
3 | Bumi | 1.0 | 1.0 | 1.0 |
4 | Mars | 1,52 | 1,88 | 1.03 |
Perhatikan bagaimana CREATE TABLE
pernyataan menggunakanOpenX JSON SerDe, yang mengharuskan setiap JSON catatan berada pada baris terpisah. Jika dalam JSON format cetak cantik, atau jika semua catatan berada pada satu baris, data tidak akan dibaca dengan benar.
Untuk kueri JSON data yang dalam format cetak cantik, Anda dapat menggunakan Sarang Ion Amazon SerDe bukan OpenX JSON SerDe. Pertimbangkan data sebelumnya yang disimpan dalam format cetak cantik:
{ 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 }
Untuk menanyakan data ini tanpa memformat ulang, Anda dapat menggunakan CREATE TABLE
pernyataan seperti berikut ini. Perhatikan bahwa, alih-alih menentukan JSON SerDe OpenX, pernyataan menentukan. 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/'
Kueri SELECT * FROM planets_ion
menghasilkan hasil yang sama seperti sebelumnya. Untuk informasi selengkapnya tentang membuat tabel dengan cara ini menggunakan Amazon Ion Hive SerDe, lihatBuat tabel Amazon Ion.
Contoh JSON data sebelumnya tidak berisi tipe data yang kompleks seperti array bersarang atau struct. Untuk informasi selengkapnya tentang kueri JSON data bersarang, lihat. Contoh: deserialisasi bersarang JSON