Avro SerDe - Amazon Athena

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 AvroSerDedi dokumentasi Apache.

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-<version>.jar file Apache yang terletak di java 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. Untuk mengunduh Apache Avro Tools secara langsung, lihat repositori Apache Avro tools Maven.

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-myregion/path/to/data/ dengan pengenal wilayah tempat Anda menjalankan Athena, misalnya,. 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 yang disediakan oleh Departemen Perhubungan AS, Biro Statistik Transportasi. Desaturasi dari aslinya.