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, danAvroIO.
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/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 (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.
- Karakteristik performa pipeline Pub/Sub ke BigQuery