

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

# Sarang JSON SerDe
<a name="hive-json-serde"></a>

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](https://github.com/rcongiu/Hive-JSON-Serde#json-data-files) dalam dokumentasi SerDe OpenX pada. GitHub 

Contoh pernyataan DDL berikut menggunakan Hive JSON SerDe untuk membuat tabel berdasarkan sampel data iklan online. Dalam `LOCATION` klausa, ganti {{myregion}} in `s3://amzn-s3-demo-bucket.elasticmapreduce/samples/hive-ads/tables/impressions` dengan pengenal 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://amzn-s3-demo-bucket.elasticmapreduce/samples/hive-ads/tables/impressions';
```

## Tentukan format stempel waktu dengan Hive JSON SerDe
<a name="hive-json-serde-timestamp-formats"></a>

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](https://cwiki.apache.org/confluence/display/hive/languagemanual+types#LanguageManualTypes-TimestampstimestampTimestamps) dalam dokumentasi Apache Hive.

## Muat tabel untuk kueri
<a name="hive-json-serde-loading-the-table"></a>

Setelah Anda membuat tabel, jalankan [MSCK REPAIR TABLE](msck-repair-table.md) untuk memuat tabel dan membuatnya dapat ditanyakan dari Athena:

```
MSCK REPAIR TABLE impressions
```

## CloudTrail Log kueri
<a name="hive-json-serde-querying-cloud-trail-logs"></a>

Anda dapat menggunakan Hive JSON SerDe untuk query CloudTrail log. Untuk informasi lebih lanjut dan contoh `CREATE TABLE` pernyataan, lihat[AWS CloudTrail Log kueri](cloudtrail-logs.md).