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/O | Baca | Tulis |
---|---|---|
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
- Baca dokumentasi Apache Beam untuk konektor I/O.