Praktik terbaik konektor I/O Apache Beam

Pemrosesan data di Dataflow dapat diparalelkan secara tinggi. Sebagian besar paralelisme ini ditangani secara otomatis oleh Dataflow. Konektor I/O berada di batas antara pipeline dan bagian lain dari arsitektur Anda, seperti penyimpanan file, database, dan sistem pesan. Oleh karena itu, konektor I/O sering kali memiliki pertimbangan khusus untuk mencapai paralelisme.

Praktik terbaik umum

Daftar berikut menjelaskan praktik terbaik umum untuk menggunakan konektor I/O di Dataflow.

  • Baca dokumentasi Javadoc, Pydoc, atau Go untuk konektor di pipeline Anda. Untuk mengetahui informasi selengkapnya, lihat Konektor I/O dalam dokumentasi Apache Beam.

  • Gunakan Apache Beam SDK versi terbaru. Konektor I/O terus ditingkatkan, dengan menambahkan fitur dan memperbaiki masalah umum.

  • Saat mengembangkan pipeline, penting untuk menyeimbangkan paralelisme tugas. Jika paralelisme tugas terlalu kecil, tugas dapat berjalan lambat, dan data dapat menumpuk di sumber. Namun, paralelisme yang terlalu tinggi dapat membebani sink dengan terlalu banyak permintaan.

  • Jangan mengandalkan urutan elemen. Secara umum, Dataflow tidak menjamin urutan elemen dalam koleksi.

  • Jika konektor I/O tidak tersedia di SDK pilihan Anda, pertimbangkan untuk menggunakan framework lintas bahasa untuk menggunakan konektor I/O dari SDK lain. Selain itu, konektor tidak selalu memiliki paritas fitur antar-SDK. Jika konektor dari SDK lain menyediakan fitur yang Anda butuhkan, Anda dapat menggunakannya sebagai transformasi lintas bahasa.

  • Secara umum, menulis konektor I/O kustom adalah hal yang sulit. Gunakan konektor yang ada jika memungkinkan. Jika Anda perlu menerapkan konektor I/O kustom, baca Mengembangkan konektor I/O baru.

  • Jika pipeline gagal, periksa error yang dicatat oleh konektor I/O. Lihat Memecahkan masalah error Dataflow.

  • Saat melakukan penulisan dari Dataflow ke konektor, pertimbangkan untuk menggunakan ErrorHandler untuk menangani penulisan yang gagal atau pembacaan yang salah format. Penanganan error jenis ini didukung untuk I/O Java berikut di Apache Beam versi 2.55.0 dan yang lebih baru: BigQueryIO, BigtableIO, PubSubIO, KafkaIO, FileIO, TextIO, dan AvroIO.

Untuk melihat contoh tolok ukur performa di pipeline streaming Dataflow, lihat Karakteristik performa pipeline Pub/Sub ke BigQuery.

Praktik terbaik untuk konektor I/O individual

Topik berikut mencantumkan praktik terbaik untuk konektor I/O individual:

Konektor I/OBacaTulis
Apache Iceberg Membaca dari Apache Iceberg Menulis ke Apache Iceberg.
Apache Kafka Membaca dari Apache Kafka Menulis ke Apache Kafka
BigQuery Membaca dari BigQuery Menulis ke BigQuery
Bigtable Membaca dari Bigtable Menulis ke Bigtable
Cloud Storage Membaca dari Cloud Storage Menulis ke Cloud Storage
Pub/Sub Membaca dari Pub/Sub Menulis ke Pub/Sub

Konektor I/O yang didukung Google

Tabel berikut mencantumkan konektor I/O Apache Beam yang didukung oleh Dataflow. Untuk mengetahui daftar lengkap konektor I/O Apache Beam, termasuk yang dikembangkan oleh komunitas Apache Beam dan didukung oleh runner lain, lihat Konektor I/O dalam dokumentasi Apache Beam.

Nama konektor I/O Java Python Go
AvroIO Didukung Didukung Didukung
BigQueryIO Didukung Didukung Didukung
BigTableIO Didukung Sink didukung Sink didukung
DatastoreIO Didukung Didukung Didukung
FhirIO (kesehatan) Didukung Tidak tersedia Didukung
FileIO Didukung Didukung Didukung
GcsFileSystem Didukung Didukung Didukung
JdbcIO Didukung Dukungan lintas bahasa Dukungan lintas bahasa
KafkaIO Didukung Dukungan lintas bahasa Dukungan lintas bahasa
LocalFileSystem Didukung Didukung Didukung
ParquetIO Didukung Didukung Didukung
PubSubIO Didukung Didukung Didukung
SpannerIO Didukung Dukungan lintas bahasa Didukung
TextIO Didukung Didukung Didukung
TFRecordIO Didukung Didukung Tidak tersedia

Langkah berikutnya