Sarang JSON SerDe - Amazon Athena

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

Sarang JSON SerDe

Hive JSON biasanya SerDe digunakan untuk memproses data JSON seperti peristiwa. Peristiwa ini direpresentasikan sebagai string baris tunggal dari teks yang disandikan JSON yang dipisahkan oleh baris baru. Hive JSON SerDe tidak mengizinkan kunci duplikat dalam map atau struct nama kunci.

catatan

SerDe Mengharapkan setiap dokumen JSON berada pada satu baris teks tanpa karakter penghentian baris yang memisahkan bidang dalam catatan. Jika teks JSON dalam format cetak cantik, Anda mungkin menerima pesan kesalahan seperti HIVE_CURSOR_ERROR: Row is not a valid JSON Object or HIVE_CURSOR_ERROR:: Unexpected JsonParseException end-of-input: expected close marker for OBJECT saat Anda mencoba menanyakan tabel setelah Anda membuatnya. Untuk informasi selengkapnya, lihat File Data JSON di dokumentasi SerDe OpenX. GitHub

Contoh pernyataan DDL berikut menggunakan Hive JSON SerDe untuk membuat tabel berdasarkan sampel data iklan online. Dalam LOCATION klausa, ganti myregion s3://DOC-EXAMPLE-BUCKET.elasticmapreduce/samples/hive-ads/tables/impressions dengan pengidentifikasi wilayah tempat Anda menjalankan Athena (misalnya,). s3://us-west-2.elasticmapreduce/samples/hive-ads/tables/impressions

CREATE EXTERNAL TABLE impressions ( requestbegintime string, adid string, impressionid string, referrer string, useragent string, usercookie string, ip string, number string, processid string, browsercookie string, requestendtime string, timers struct < modellookup:string, requesttime:string >, threadid string, hostname string, sessionid string ) PARTITIONED BY (dt string) ROW FORMAT SERDE 'org.apache.hive.hcatalog.data.JsonSerDe' LOCATION 's3://DOC-EXAMPLE-BUCKET.elasticmapreduce/samples/hive-ads/tables/impressions';

Menentukan format stempel waktu dengan Hive JSON SerDe

Untuk mengurai nilai stempel waktu dari string, Anda dapat menambahkan WITH SERDEPROPERTIES subfield ke ROW FORMAT SERDE klausa dan menggunakannya untuk menentukan parameter. timestamp.formats Dalam parameter, tentukan daftar terpisah koma dari satu atau beberapa pola stempel waktu, seperti pada contoh berikut:

... ROW FORMAT SERDE 'org.apache.hive.hcatalog.data.JsonSerDe' WITH SERDEPROPERTIES ("timestamp.formats"="yyyy-MM-dd'T'HH:mm:ss.SSS'Z',yyyy-MM-dd'T'HH:mm:ss") ...

Untuk informasi selengkapnya, lihat Stempel waktu dalam dokumentasi Apache Hive.

Memuat tabel untuk kueri

Setelah Anda membuat tabel, jalankan MSCK REPAIR TABLE untuk memuat tabel dan membuatnya dapat ditanyakan dari Athena:

MSCK REPAIR TABLE impressions

Meminta log CloudTrail

Anda dapat menggunakan Hive JSON SerDe untuk query CloudTrail log. Untuk informasi lebih lanjut dan contoh CREATE TABLE pernyataan, lihatMeminta log AWS CloudTrail.