Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Avro SerDe
Gunakan Avro SerDe untuk membuat tabel Athena dari data Avro.
Nama pustaka serialisasi
Nama pustaka serialisasi untuk Avro SerDe adalah. org.apache.hadoop.hive.serde2.avro.AvroSerDe
Untuk informasi teknis, lihat AvroSerDe
Gunakan Avro SerDe
Untuk alasan keamanan, Athena tidak mendukung penggunaan avro.schema.url
untuk menentukan skema tabel; gunakan sebagai gantinya. avro.schema.literal
Untuk mengekstrak skema dari data dalam format Avro, gunakan avro-tools-
file Apache yang terletak di <version>
.jarjava
subdirektori rilis Avro yang Anda instal. Gunakan getschema
parameter untuk mengembalikan skema yang dapat Anda gunakan dalam WITH SERDEPROPERTIES
pernyataan Anda, seperti pada contoh berikut.
java -jar avro-tools-1.8.2.jar getschema my_data.avro
Untuk mengunduh Avro, lihat rilis Apache Avro
Setelah Anda mendapatkan skema, gunakan CREATE TABLE
pernyataan untuk membuat tabel Athena berdasarkan data Avro yang mendasari yang disimpan di Amazon S3. Untuk menentukan Avro SerDe dalam CREATE TABLE
pernyataan Anda, gunakanROW FORMAT SERDE
'org.apache.hadoop.hive.serde2.avro.AvroSerDe'
. Tentukan skema menggunakan WITH SERDEPROPERTIES
klausa, seperti pada contoh berikut.
catatan
Ganti myregion
masuk s3://athena-examples-
dengan pengenal wilayah tempat Anda menjalankan Athena, misalnya,. myregion
/path/to/data/s3://athena-examples-us-west-1/path/to/data/
CREATE EXTERNAL TABLE flights_avro_example ( yr INT, flightdate STRING, uniquecarrier STRING, airlineid INT, carrier STRING, flightnum STRING, origin STRING, dest STRING, depdelay INT, carrierdelay INT, weatherdelay INT ) PARTITIONED BY (year STRING) ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.avro.AvroSerDe' WITH SERDEPROPERTIES ('avro.schema.literal'=' { "type" : "record", "name" : "flights_avro_subset", "namespace" : "default", "fields" : [ { "name" : "yr", "type" : [ "null", "int" ], "default" : null }, { "name" : "flightdate", "type" : [ "null", "string" ], "default" : null }, { "name" : "uniquecarrier", "type" : [ "null", "string" ], "default" : null }, { "name" : "airlineid", "type" : [ "null", "int" ], "default" : null }, { "name" : "carrier", "type" : [ "null", "string" ], "default" : null }, { "name" : "flightnum", "type" : [ "null", "string" ], "default" : null }, { "name" : "origin", "type" : [ "null", "string" ], "default" : null }, { "name" : "dest", "type" : [ "null", "string" ], "default" : null }, { "name" : "depdelay", "type" : [ "null", "int" ], "default" : null }, { "name" : "carrierdelay", "type" : [ "null", "int" ], "default" : null }, { "name" : "weatherdelay", "type" : [ "null", "int" ], "default" : null } ] } ') STORED AS AVRO LOCATION 's3://athena-examples-
myregion
/flight/avro/';
Jalankan MSCK REPAIR TABLE
pernyataan di atas meja untuk menyegarkan metadata partisi.
MSCK REPAIR TABLE flights_avro_example;
Tanyakan 10 kota keberangkatan teratas berdasarkan jumlah total keberangkatan.
SELECT origin, count(*) AS total_departures FROM flights_avro_example WHERE year >= '2000' GROUP BY origin ORDER BY total_departures DESC LIMIT 10;
catatan
Data tabel penerbangan berasal dari Penerbangan