Pertimbangan dan batasan - Amazon Data Firehose

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

Pertimbangan dan batasan

catatan

Firehose mendukung Apache Iceberg Tables sebagai tujuan di semua kecuali Wilayah Wilayah AWSTiongkok,, AWS GovCloud (US) Regions dan Asia Pasifik (Malaysia).

Dukungan Firehose untuk tabel Apache Iceberg memiliki pertimbangan dan batasan berikut.

  • Throughput — Jika Anda menggunakan Direct PUT sebagai sumber untuk mengirimkan data ke tabel Apache Iceberg, maka throughput maksimum per aliran adalah 5 MiB/second di Wilayah AS Timur (Virginia N.), AS Barat (Oregon), dan Eropa (Irlandia) dan 1 di semua lainnya. MiB/second Wilayah AWS Jika Anda ingin menyisipkan data ke tabel Iceberg tanpa pembaruan dan penghapusan dan Anda menginginkan throughput yang lebih tinggi untuk streaming Anda, maka Anda dapat menggunakan formulir Batas Firehose untuk meminta peningkatan batas throughput.

    Anda juga dapat mengatur AppendOnly bendera True jika Anda hanya ingin menyisipkan data dan tidak melakukan pembaruan dan penghapusan. Dengan menyetel AppendOnly bendera keTrue, Firehose secara otomatis menskalakan agar sesuai dengan throughput Anda. Saat ini, Anda dapat mengatur flag ini hanya dengan operasi CreateDeliveryStreamAPI.

    Jika aliran PUT Langsung mengalami pelambatan karena volume konsumsi data yang lebih tinggi yang melebihi kapasitas throughput aliran Firehose, Firehose secara otomatis meningkatkan batas throughput aliran hingga throttling terisi. Bergantung pada peningkatan throughput dan throttling, Firehose mungkin membutuhkan waktu lebih lama untuk meningkatkan throughput aliran ke tingkat yang diinginkan. Karena itu, terus coba lagi catatan menelan data yang gagal. Jika Anda mengharapkan volume data meningkat dalam ledakan besar yang tiba-tiba, atau jika aliran baru Anda membutuhkan throughput yang lebih tinggi daripada batas throughput default, mintalah untuk meningkatkan batas throughput.

  • Transaksi S3 Per Detik (TPS) - Untuk mengoptimalkan kinerja S3, jika Anda menggunakan Kinesis Data Streams atau Amazon MSK sebagai sumber, kami sarankan Anda mempartisi rekaman sumber menggunakan kunci partisi yang tepat. Dengan cara itu, catatan data yang dirutekan ke tabel Iceberg yang sama dipetakan ke satu atau beberapa partisi sumber yang dikenal sebagai pecahan. Jika memungkinkan, sebarkan catatan data milik tabel Iceberg target yang berbeda menjadi berbeda. partitions/shards, so that you can use all the aggregate throughput available across all the partitions/shards of the source topic/stream

  • Kolom - Untuk nama dan nilai kolom, Firehose hanya mengambil tingkat pertama node dalam JSON bersarang multi-level. Misalnya, Firehose memilih node yang tersedia di tingkat pertama termasuk bidang posisi. Nama kolom dan tipe data dari data sumber harus sama persis dengan tabel target agar Firehose berhasil dikirimkan. Dalam hal ini, Firehose mengharapkan bahwa Anda memiliki kolom tipe data struct atau map di tabel Iceberg Anda agar sesuai dengan bidang posisi. Firehose mendukung 16 tingkat bersarang. Berikut ini adalah contoh dari JSON bersarang.

    { "version":"2016-04-01", "deviceId":"<solution_unique_device_id>", "sensorId":"<device_sensor_id>", "timestamp":"2024-01-11T20:42:45.000Z", "value":"<actual_value>", "position":{ "x":143.595901, "y":476.399628, "z":0.24234876 } }

    Jika nama kolom atau tipe data tidak cocok, Firehose akan melempar kesalahan dan mengirimkan data ke bucket kesalahan S3. Jika semua nama kolom dan tipe data cocok dalam tabel Apache Iceberg, tetapi Anda memiliki bidang tambahan yang ada dalam catatan sumber, Firehose melewatkan bidang baru.

  • Satu objek JSON per catatan - Anda hanya dapat mengirim satu objek JSON dalam satu catatan Firehose. Jika Anda menggabungkan dan mengirim beberapa objek JSON di dalam rekaman, Firehose akan melempar kesalahan dan mengirimkan data ke bucket kesalahan S3. Jika Anda menggabungkan rekaman dengan KPL dan menelan data ke Firehose dengan Amazon Kinesis Data Streams sebagai sumber, Firehose secara otomatis melakukan de-agregasi dan menggunakan satu objek JSON per rekaman.

  • Optimasi pemadatan dan penyimpanan — Setiap kali Anda menulis ke Iceberg Tables menggunakan Firehose, ia melakukan dan menghasilkan snapshot, file data, dan menghapus file. Memiliki banyak file data meningkatkan overhead metadata dan memengaruhi kinerja baca. Untuk mendapatkan kinerja kueri yang efisien, Anda mungkin ingin mempertimbangkan solusi yang secara berkala mengambil file data kecil dan menulis ulang mereka menjadi lebih sedikit file data yang lebih besar. Proses ini disebut pemadatan. AWS Glue Data Catalog mendukung pemadatan otomatis dari Apache Iceberg Tables Anda. Untuk informasi selengkapnya, lihat Manajemen pemadatan di Panduan Pengguna AWS Glue. Untuk informasi tambahan, lihat Pemadatan otomatis Tabel Gunung Es Apache. Atau, Anda dapat menjalankan perintah Athena Optimize untuk melakukan pemadatan secara manual. Untuk informasi selengkapnya tentang perintah Optimalkan, lihat Athena Optimize.

    Selain pemadatan file data, Anda juga dapat mengoptimalkan konsumsi penyimpanan dengan pernyataan VACUUM yang melakukan pemeliharaan tabel pada tabel Apache Iceberg, seperti kedaluwarsa snapshot dan penghapusan file yatim piatu. Atau, Anda dapat menggunakan AWS Glue Data Catalog yang juga mendukung optimasi tabel terkelola tabel Apache Iceberg dengan secara otomatis menghapus file data, file yatim piatu, dan snapshot kedaluwarsa yang tidak lagi diperlukan. Untuk informasi lebih lanjut, lihat posting blog ini tentang Optimalisasi penyimpanan Apache Iceberg Tables.

  • Kami tidak mendukung sumber Amazon MSK Tanpa Server untuk Apache Iceberg Tables sebagai tujuan.

  • Untuk pengiriman ke tabel di bucket tabel Amazon S3, Firehose hanya mendukung katalog default. AWS Glue

  • Untuk operasi pembaruan, Firehose menempatkan file hapus diikuti dengan operasi penyisipan. Menempatkan file hapus menimbulkan biaya Amazon S3.

  • Firehose tidak merekomendasikan penggunaan beberapa aliran Firehose untuk menulis data ke tabel Apache Iceberg yang sama. Ini karena Apache Iceberg bergantung pada Optimistic Concurrency Control (OCC). Jika beberapa aliran Firehose mencoba menulis ke satu tabel Iceberg secara bersamaan, maka hanya satu aliran yang berhasil melakukan data pada waktu tertentu. Aliran lain yang gagal melakukan back-off, dan coba lagi operasi komit hingga durasi percobaan ulang yang dikonfigurasi berakhir. Setelah durasi coba lagi habis, data dan hapus kunci file (jalur Amazon S3) dikirim ke awalan kesalahan Amazon S3 yang dikonfigurasi.

  • Versi Iceberg Library saat ini yang didukung Firehose adalah versi 1.5.2.

  • Untuk mengirimkan data terenkripsi ke Tabel Amazon S3, Anda harus AWS Key Management Service mengonfigurasi parameter di Tabel Amazon S3, dan bukan dalam konfigurasi Firehose. Jika Anda mengonfigurasi AWS Key Management Service parameter di Firehose untuk mengirimkan data terenkripsi ke Tabel Amazon S3, Firehose tidak dapat menggunakan parameter tersebut untuk mengenkripsi. Untuk informasi selengkapnya, lihat Menggunakan enkripsi sisi server dengan kunci. AWS KMS

  • Firehose stream hanya mendukung pengiriman ke database dan tabel yang dibuat melalui API Iceberg. GlueCatalog Pengiriman ke database dan tabel yang dibuat melalui Glue SDK tidak didukung. Perhatikan bahwa tanda hubung (-) bukan karakter yang didukung untuk database dan nama tabel di pustaka Iceberg. Untuk detail selengkapnya, lihat Glue Database Regex dan Glue Table Regex yang didukung oleh pustaka Iceberg.