Untuk membaca data dari Cloud Storage ke Dataflow, gunakan konektor I/O Apache Beam TextIO
atau AvroIO
.
Menyertakan dependensi library Google Cloud
Untuk menggunakan konektor TextIO
atau AvroIO
dengan Cloud Storage, sertakan dependensi berikut. Library ini menyediakan pengendali skema untuk nama file
"gs://"
.
Java
<dependency>
<groupId>org.apache.beam</groupId>
<artifactId>beam-sdks-java-io-google-cloud-platform</artifactId>
<version>${beam.version}</version>
</dependency>
Python
apache-beam[gcp]==VERSION
Go
import _ "github.com/apache/beam/sdks/v2/go/pkg/beam/io/filesystem/gcs"
Untuk mengetahui informasi selengkapnya, lihat Menginstal Apache Beam SDK.
Keparalelan
Konektor TextIO
dan AvroIO
mendukung dua tingkat paralelisme:
- Setiap file diberi kunci secara terpisah, sehingga beberapa pekerja dapat membacanya.
- Jika file tidak dikompresi, konektor dapat membaca sub-rentang dari setiap file secara terpisah, yang menyebabkan tingkat paralelisme yang sangat tinggi. Pemisahan ini hanya dapat dilakukan jika setiap baris dalam file adalah data yang bermakna. Misalnya, tidak tersedia secara default untuk file JSON.
Performa
Tabel berikut menunjukkan metrik performa untuk membaca dari Cloud Storage. Workload tersebut dijalankan pada satu pekerja e2-standard2
, menggunakan Apache Beam SDK 2.49.0 untuk Java. Runner v2 tidak digunakan.
100 M data | 1 kB | 1 kolom | Throughput (byte) | Throughput (elemen) |
---|---|---|
Melihat | 320 Mbps | 320.000 elemen per detik |
Metrik ini didasarkan pada pipeline batch sederhana. Fungsi ini ditujukan untuk membandingkan performa antara konektor I/O, dan tidak selalu mewakili pipeline dunia nyata. Performa pipeline Dataflow bersifat kompleks, dan merupakan fungsi dari jenis VM, data yang diproses, performa sumber dan sink eksternal, serta kode pengguna. Metrik didasarkan pada pengoperasian Java SDK, dan tidak mewakili karakteristik performa SDK bahasa lainnya. Untuk mengetahui informasi selengkapnya, lihat Performa Beam IO.
Praktik terbaik
Hindari penggunaan
watchForNewFiles
dengan Cloud Storage. Pendekatan ini diskalakan dengan kurang baik untuk pipeline produksi yang besar, karena konektor harus menyimpan daftar file yang terlihat di memori. Daftar tidak dapat dihapus dari memori, yang akan mengurangi memori kerja pekerja dari waktu ke waktu. Pertimbangkan untuk menggunakan notifikasi Pub/Sub untuk Cloud Storage. Untuk mengetahui informasi selengkapnya, lihat Pola pemrosesan file.Jika nama file dan isi file adalah data yang berguna, gunakan class
FileIO
untuk membaca nama file. Misalnya, nama file mungkin berisi metadata yang berguna saat memproses data dalam file. Untuk informasi selengkapnya, lihat Mengakses nama file. DokumentasiFileIO
juga menunjukkan contoh pola ini.
Langkah selanjutnya
- Baca dokumentasi
TextIO
API. - Lihat daftar template yang disediakan Google.