I/O Terkelola memungkinkan Dataflow mengelola konektor I/O tertentu yang digunakan dalam pipeline Apache Beam. I/O terkelola menyederhanakan pengelolaan pipeline yang terintegrasi dengan sumber dan sink yang didukung.
I/O Terkelola terdiri dari dua komponen yang bekerja sama:
Transformasi Apache Beam yang menyediakan API umum untuk membuat konektor I/O (sumber dan sink).
Layanan Dataflow yang mengelola konektor I/O ini atas nama Anda, termasuk kemampuan untuk mengupgradenya secara independen dari versi Apache Beam.
Keunggulan I/O terkelola mencakup hal berikut:
Upgrade otomatis. Dataflow otomatis mengupgrade konektor I/O terkelola di pipeline Anda. Artinya, pipeline Anda akan menerima perbaikan keamanan, peningkatan performa, dan perbaikan bug untuk konektor ini, tanpa memerlukan perubahan kode apa pun. Untuk informasi selengkapnya, lihat Upgrade otomatis.
API yang konsisten. Secara tradisional, konektor I/O di Apache Beam memiliki API yang berbeda, dan setiap konektor dikonfigurasi dengan cara yang berbeda. I/O terkelola menyediakan satu API konfigurasi yang menggunakan properti nilai kunci, sehingga menghasilkan kode pipeline yang lebih sederhana dan konsisten. Untuk informasi selengkapnya, lihat Configuration API.
Persyaratan
SDK berikut mendukung I/O terkelola:
- Apache Beam SDK untuk Java versi 2.58.0 atau yang lebih baru.
- Apache Beam SDK untuk Python versi 2.61.0 atau yang lebih baru.
Layanan backend memerlukan Dataflow Runner v2. Jika Runner v2 tidak diaktifkan, pipeline Anda masih berjalan, tetapi tidak mendapatkan manfaat dari layanan I/O terkelola.
Upgrade otomatis
Pipeline Dataflow dengan konektor I/O terkelola otomatis menggunakan versi konektor terbaru yang andal, sebagai berikut:
Saat Anda mengirimkan tugas, Dataflow menggunakan konektor versi terbaru yang telah diuji dan berfungsi dengan baik.
Untuk tugas streaming, Dataflow akan memeriksa update setiap kali Anda meluncurkan tugas pengganti, dan otomatis menggunakan versi terbaru yang diketahui baik. Dataflow melakukan pemeriksaan ini meskipun Anda tidak mengubah kode apa pun dalam tugas penggantian.
Anda tidak perlu khawatir untuk mengupdate konektor atau versi Apache Beam pipeline secara manual.
Diagram berikut menunjukkan proses upgrade. Pengguna membuat pipeline Apache Beam menggunakan SDK versi X. Saat pengguna mengirimkan tugas, Dataflow akan memeriksa versi Managed I/O dan mengupgradenya ke versi Y.
Proses upgrade menambahkan waktu sekitar dua menit ke waktu startup untuk tugas. Untuk
memeriksa status operasi I/O terkelola, cari
entri log yang menyertakan string
"Managed Transform(s)
".
Configuration API
I/O Terkelola adalah transformasi Apache Beam siap pakai yang menyediakan API konsisten untuk mengonfigurasi sumber dan sink.
Untuk membuat sumber atau sink yang didukung oleh Managed I/O, Anda menggunakan
class Managed
di Java. Tentukan sumber atau sink yang akan dibuat instance-nya,
dan teruskan kumpulan parameter konfigurasi, mirip dengan berikut:
Map config = ImmutableMap.<String, Object>builder()
.put("config1", "abc")
.put("config2", 1);
pipeline.apply(Managed.read(/*Which source to read*/).withConfig(config))
.getSinglePCollection();
Anda juga dapat meneruskan parameter konfigurasi sebagai file YAML. Untuk contoh kode lengkap, lihat Membaca dari Apache Iceberg.
Tujuan dinamis
Untuk beberapa sink, konektor I/O terkelola dapat memilih tujuan secara dinamis berdasarkan nilai kolom dalam data yang masuk.
Untuk menggunakan tujuan dinamis, berikan string template untuk tujuan. String
template dapat menyertakan nama kolom dalam tanda kurung kurawal, seperti
"tables.{field1}"
. Saat runtime, konektor akan mengganti nilai kolom untuk setiap data yang masuk, untuk menentukan tujuan data tersebut.
Misalnya, data Anda memiliki kolom bernama airport
. Anda dapat menetapkan
tujuan ke "flights.{airport}"
. Jika airport
=SFO
, data akan ditulis
ke flights.SFO
. Untuk kolom bertingkat, gunakan notasi titik. Misalnya:
{top.middle.nested}
.
Pemfilteran
Anda dapat memfilter kolom tertentu sebelum ditulis ke
tabel tujuan. Untuk sink yang mendukung tujuan dinamis, Anda dapat menggunakan
parameter drop
, keep
, atau only
untuk tujuan ini. Parameter ini memungkinkan
Anda menyertakan metadata tujuan dalam kumpulan data input, tanpa menulis
metadata ke tujuan.
Anda dapat menetapkan maksimal satu parameter ini untuk sink tertentu.
Parameter konfigurasi | Jenis data | Deskripsi |
---|---|---|
drop |
daftar string | Daftar nama kolom yang akan dihapus sebelum menulis ke tujuan. |
keep |
daftar string | Daftar nama kolom yang akan disimpan saat menulis ke tujuan. Kolom lainnya akan dihapus. |
only |
string | Nama tepat satu kolom yang akan digunakan sebagai data tingkat atas yang akan ditulis saat menulis ke tujuan. Semua kolom lainnya dihapus. Kolom ini harus berjenis baris. |
Sumber dan sink yang didukung
I/O Terkelola mendukung sumber dan sink berikut.