Praktik terbaik konektor I/O Apache Beam

Pemrosesan data di Dataflow dapat dilakukan secara paralel dan ekstensif. Sebagian besar paralelisme ini ditangani secara otomatis oleh Dataflow. Konektor I/O berada di batas antara pipeline dan bagian lain arsitektur Anda, seperti penyimpanan file, database, dan sistem pesan. Dengan demikian, 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, menambahkan fitur, dan memperbaiki masalah umum.

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

  • Jangan mengandalkan pengurutan 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 perlukan, Anda dapat menggunakannya sebagai transformasi lintas bahasa.

  • Secara umum, menulis konektor I/O kustom merupakan 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 ke dalam log oleh konektor I/O. Lihat Memecahkan masalah error Dataflow.

  • Saat melakukan operasi tulis dari Dataflow ke konektor, sebaiknya gunakan ErrorHandler untuk menangani operasi tulis yang gagal atau pembacaan yang salah format. Jenis penanganan error 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.

Praktik terbaik untuk setiap konektor I/O

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

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 (layanan 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