Membaca dari Cloud Storage ke Dataflow

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. Dokumentasi FileIO juga menunjukkan contoh pola ini.

Langkah selanjutnya