

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Avro SerDe
<a name="avro-serde"></a>

Gunakan Avro SerDe untuk membuat tabel Athena dari data Avro.

## Nama pustaka serialisasi
<a name="avro-serde-library-name"></a>

Nama pustaka serialisasi untuk Avro SerDe adalah. `org.apache.hadoop.hive.serde2.avro.AvroSerDe` Untuk informasi teknis, lihat [AvroSerDe](https://cwiki.apache.org/confluence/display/Hive/AvroSerDe)di dokumentasi Apache. 

## Gunakan Avro SerDe
<a name="avro-serde-using"></a>

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](http://avro.apache.org/releases.html#Download). Untuk mengunduh Apache Avro Tools secara langsung, lihat repositori [Apache Avro tools Maven](https://mvnrepository.com/artifact/org.apache.avro/avro-tools).

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, gunakan`ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.avro.AvroSerDe'`. Tentukan skema menggunakan `WITH SERDEPROPERTIES` klausa, seperti pada contoh berikut.

**catatan**  
Ganti *myregion* `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](http://www.transtats.bts.gov/DL_SelectFields.asp?Table_ID=236&amp;DB_Short_Name=On-Time) yang disediakan oleh Departemen Perhubungan AS, [Biro Statistik Transportasi](http://www.transtats.bts.gov/). Desaturasi dari aslinya.