Mengkonversi format data masukan di Amazon Data Firehose - Amazon Data Firehose

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

Amazon Data Firehose dapat mengonversi format data input Anda dari JSON Apache Parquet atau Apache ORC sebelum menyimpan data di Amazon S3. Parket dan ORC merupakan format data kolumnar yang menghemat ruang dan memungkinkan kueri lebih cepat dibandingkan dengan format berorientasi baris seperti. JSON Jika Anda ingin mengonversi format input selainJSON, seperti nilai yang dipisahkan koma (CSV) atau teks terstruktur, Anda dapat menggunakan AWS Lambda untuk mengubahnya menjadi yang JSON pertama. Untuk informasi selengkapnya, lihat Mengubah data sumber di Amazon Data Firehose.

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

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

Saat menggabungkan beberapa JSON dokumen ke dalam catatan yang sama, pastikan masukan Anda masih disajikan dalam JSON format yang didukung. Array JSON dokumen bukanlah masukan yang valid.

Misalnya, ini adalah input yang benar: {"a":1}{"a":2}

Dan ini adalah input yang salah: [{"a":1}, {"a":2}]

Pilih OpenX JSON SerDe jika input Anda JSON berisi stempel waktu dalam format berikut:

  • yyyy-MM-dd'T'HH:mm:ss[.S]'Z', dengan fraksi dapat terdiri atas hingga 9 digit – Sebagai contoh, 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 (). _ Itu juga dapat mengonversi JSON kunci menjadi huruf kecil sebelum deserialisasinya. Untuk informasi selengkapnya tentang opsi yang tersedia dengan deserializer ini melalui Amazon Data Firehose, lihat O. penXJson SerDe

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. 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.

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 yang berikut:

  • Periode (.) di nama kolom.

  • Bidang yang jenisnya uniontype.

  • Bidang yang memiliki tipe numerik dalam skema, tetapi itu adalah string dalam. JSON Misalnya, jika skema adalah (int), dan JSON is{"a":"123"}, Hive SerDe memberikan kesalahan.

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

Skema

Amazon Data Firehose memerlukan skema untuk menentukan cara menafsirkan data tersebut. Gunakan AWS Glue 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 AWS Katalog Data Glue di AWS Glue Panduan Pengembang.

catatan

Skema yang dibuat di AWS Glue Katalog Data harus sesuai dengan struktur data input. Jika tidak, data yang dikonversi tidak akan berisi atribut yang tidak ditentukan dalam skema. Jika Anda menggunakan nestedJSON, gunakan STRUCT tipe dalam skema yang mencerminkan struktur data AndaJSON. Lihat contoh ini untuk cara menangani bersarang JSON dengan STRUCT tipe.

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 orVARCHAR, Firehose memotong string pada panjang yang ditentukan saat membaca data input. Jika string data yang mendasarinya lebih panjang, itu tetap tidak berubah.

Serializer

Firehose memerlukan serializer untuk mengonversi data ke format penyimpanan kolom target (Parket atauORC) - Anda dapat memilih salah satu dari dua jenis serializer berikut.

Serializer yang Anda pilih tergantung pada kebutuhan bisnis Anda. Untuk mempelajari lebih lanjut tentang dua opsi serializer, lihat ORC SerDedan Parket. SerDe