

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

# Mengkonversi format data masukan di Amazon Data Firehose
<a name="record-format-conversion"></a>

Amazon Data Firehose dapat mengonversi format data input Anda dari JSON ke [Apache Parquet atau Apache](https://parquet.apache.org/) [ORC](https://orc.apache.org/) sebelum menyimpan data di Amazon S3. Parquet dan ORC adalah format data kolumnar yang menghemat ruang dan memungkinkan kueri yang lebih cepat dibandingkan dengan format berorientasi baris seperti JSON. Jika Anda ingin mengonversi format input selain JSON, seperti nilai yang dipisahkan koma (CSV) atau teks terstruktur, Anda dapat menggunakannya AWS Lambda untuk mengubahnya menjadi JSON terlebih dahulu. Untuk informasi selengkapnya, lihat [Mengubah data sumber di Amazon Data Firehose](data-transformation.md).

Anda dapat mengonversi format data Anda bahkan jika Anda menggabungkan catatan Anda sebelum mengirimnya ke Amazon Data Firehose.

Amazon Data Firehose memerlukan tiga elemen berikut untuk mengonversi format data rekaman Anda: 

## Deserializer
<a name="record-format-conversion-deserializer"></a>

Amazon Data Firehose memerlukan deserializer untuk membaca JSON data input Anda. Anda dapat memilih salah satu dari dua jenis deserializer berikut.

Ketika menggabungkan beberapa dokumen JSON ke dalam catatan yang sama, pastikan bahwa input Anda masih disajikan dalam format JSON yang didukung. Array dokumen JSON bukan input yang valid. 

Misalnya, ini adalah input yang benar: `{"a": 1}{"b": 1}` dan ini adalah input yang salah:`[{"a":1}, {"a":2}]`.
+ [Apache Sarang JSON SerDe](https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DDL#LanguageManualDDL-JSON)
+ [OpenX JSON SerDe](https://github.com/rcongiu/Hive-JSON-Serde)

### Pilih deserializer JSON
<a name="record-format-conversion-deserializers"></a>

Pilih [OpenX JSON SerDe jika masukan JSON](https://github.com/rcongiu/Hive-JSON-Serde) Anda berisi stempel waktu dalam format berikut:
+  yyyy-MM-dd'T'HH:mm: SS [.S] 'Z', di mana fraksi dapat memiliki hingga 9 digit — Misalnya,. `2017-02-07T15:13:01.39256Z`
+  yyyy-[M]M-[d]d HH:mm:ss[.S], dengan fraksi dapat terdiri atas hingga 9 digit – Sebagai contoh, `2017-02-07 15:13:01.14`.
+  Detik jangka waktu – Sebagai contoh, `1518033528`.
+  Milidetik jangka waktu – Sebagai contoh, `1518033528123`.
+  Detik jangka waktu titik mengambang – Sebagai contoh, `1518033528.123`.

OpenX JSON SerDe dapat mengonversi periode (`.`) menjadi garis bawah (). `_` OpenX JSON SerDE juga dapat mengonversi kunci JSON menjadi huruf kecil sebelum mendeserialisasinya. [Untuk informasi selengkapnya tentang opsi yang tersedia dengan deserializer ini melalui Amazon Data Firehose, lihat Buka. XJson SerDe](https://docs.aws.amazon.com/firehose/latest/APIReference/API_OpenXJsonSerDe.html)

Jika Anda tidak yakin deserializer mana yang harus dipilih, gunakan OpenX JSON SerDe, kecuali jika Anda memiliki stempel waktu yang tidak didukungnya.

Jika Anda memiliki stempel waktu dalam format selain yang tercantum sebelumnya, gunakan [Apache Hive](https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DDL#LanguageManualDDL-JSON) JSON. SerDe Bila Anda memilih deserializer ini, Anda dapat menentukan format stempel waktu yang akan digunakan. Untuk melakukannya, ikuti sintaks pola string format `DateTimeFormat` Joda-Time. Untuk informasi selengkapnya, lihat [Kelas DateTimeFormat](https://www.joda.org/joda-time/apidocs/org/joda/time/format/DateTimeFormat.html). 

Anda juga dapat menggunakan nilai khusus `millis` untuk mengurai stempel waktu dalam milidetik jangka waktu. Jika Anda tidak menentukan format, Amazon Data Firehose menggunakan secara `java.sql.Timestamp::valueOf` default.

The Hive JSON SerDe tidak mengizinkan hal berikut:
+ Periode (`.`) di nama kolom.
+ Bidang yang jenisnya `uniontype`.
+ Bidang yang memiliki jenis numerik dalam skema, tetapi berupa string di JSON. Misalnya, jika skema adalah (int), dan JSON adalah`{"a":"123"}`, Hive SerDe memberikan kesalahan.

The Hive SerDe tidak mengubah JSON bersarang menjadi string. Misalnya, jika Anda memiliki `{"a":{"inner":1}}`, itu tidak memperlakukan `{"inner":1}` sebagai string.

## Skema
<a name="record-format-conversion-schema"></a>

Amazon Data Firehose memerlukan skema untuk menentukan cara menafsirkan data tersebut. Gunakan [AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/what-is-glue.html) untuk membuat skema di. AWS Glue Data Catalog Amazon Data Firehose kemudian mereferensikan skema tersebut dan menggunakannya untuk menafsirkan data input Anda. Anda dapat menggunakan skema yang sama untuk mengonfigurasi Amazon Data Firehose dan perangkat lunak analitik Anda. Untuk informasi selengkapnya, lihat [Mengisi Katalog Data AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/populate-data-catalog.html) di *Panduan AWS Glue Pengembang*.

**catatan**  
Skema yang dibuat dalam Katalog AWS Glue Data harus sesuai dengan struktur data input. Jika tidak, data yang dikonversi tidak akan berisi atribut yang tidak ditentukan dalam skema. Jika Anda menggunakan JSON bersarang, gunakan tipe STRUCT dalam skema yang mencerminkan struktur data JSON Anda. Lihat [contoh ini](https://docs.aws.amazon.com/athena/latest/ug/openx-json-serde.html#nested-json-serde-example) untuk cara menangani JSON bersarang dengan tipe STRUCT. 

**penting**  
Untuk tipe data yang tidak menentukan batas ukuran, ada batas praktis 32 MBs untuk semua data dalam satu baris.  
Jika Anda menentukan panjang untuk `CHAR` or`VARCHAR`, Firehose memotong string pada panjang yang ditentukan saat membaca data input. Jika string data yang mendasarinya lebih panjang, itu tetap tidak berubah.

## Serializer
<a name="record-format-conversion-serializer"></a>

**Firehose memerlukan serializer untuk mengonversi data ke format penyimpanan kolom target (Parket atau ORC)** - Anda dapat memilih salah satu dari dua jenis serializer berikut. 
+ [ORC SerDe](https://cwiki.apache.org/confluence/display/Hive/LanguageManual+ORC)
+ [Parket SerDe](https://cwiki.apache.org/confluence/display/Hive/Parquet)

### Pilih serializer
<a name="record-format-conversion-serializers"></a>

Serializer yang Anda pilih tergantung pada kebutuhan bisnis Anda. [Untuk mempelajari lebih lanjut tentang dua opsi serializer, lihat [ORC SerDe](https://cwiki.apache.org/confluence/display/Hive/LanguageManual+ORC) dan Parket. SerDe](https://cwiki.apache.org/confluence/display/Hive/Parquet)