Membuat pipeline Dataflow menggunakan Java
Dokumen ini menunjukkan cara menyiapkan project Google Cloud, membuat contoh pipeline yang dibuat dengan Apache Beam SDK untuk Java, dan menjalankan contoh pipeline di layanan Dataflow. Pipeline membaca file teks dari Cloud Storage, menghitung jumlah kata unik dalam file, lalu menulis kembali jumlah kata ke Cloud Storage. Untuk pengantar pipeline WordCount, lihat video Cara menggunakan WordCount di Apache Beam.
Tutorial ini memerlukan Maven, tetapi Anda juga dapat mengonversi project contoh dari Maven ke Gradle. Untuk mempelajari lebih lanjut, lihat Opsional: Mengonversi dari Maven ke Gradle.
Jika ingin mengikuti panduan langkah demi langkah untuk tugas ini langsung di Konsol Google Cloud, klik Pandu saya:
Sebelum memulai
- Login ke akun Google Cloud Anda. Jika Anda baru menggunakan Google Cloud, buat akun untuk mengevaluasi performa produk kami dalam skenario dunia nyata. Pelanggan baru juga mendapatkan kredit gratis senilai $300 untuk menjalankan, menguji, dan men-deploy workload.
- Menginstal Google Cloud CLI.
-
Untuk initialize gcloud CLI, jalankan perintah berikut:
gcloud init
-
Buat atau pilih project Google Cloud.
-
Membuat project Google Cloud:
gcloud projects create PROJECT_ID
Ganti
PROJECT_ID
dengan nama untuk project Google Cloud yang Anda buat. -
Pilih project Google Cloud yang Anda buat:
gcloud config set project PROJECT_ID
Ganti
PROJECT_ID
dengan nama project Google Cloud Anda.
-
-
Pastikan penagihan telah diaktifkan untuk project Google Cloud Anda.
-
Aktifkan API Dataflow, Compute Engine, Cloud Logging, Cloud Storage, JSON Google Cloud Storage, BigQuery, Cloud Pub/Sub, Cloud Datastore, dan Cloud Resource Manager:
gcloud services enable dataflow
compute_component logging storage_component storage_api bigquery pubsub datastore.googleapis.com cloudresourcemanager.googleapis.com -
Buat kredensial autentikasi lokal untuk Akun Google Anda:
gcloud auth application-default login
-
Berikan peran ke Akun Google Anda. Jalankan perintah berikut satu kali untuk setiap peran IAM berikut:
roles/iam.serviceAccountUser
gcloud projects add-iam-policy-binding PROJECT_ID --member="user:EMAIL_ADDRESS" --role=ROLE
- Ganti
PROJECT_ID
dengan project ID Anda. - Ganti
EMAIL_ADDRESS
dengan alamat email Anda. - Ganti
ROLE
dengan setiap peran individual.
- Ganti
- Menginstal Google Cloud CLI.
-
Untuk initialize gcloud CLI, jalankan perintah berikut:
gcloud init
-
Buat atau pilih project Google Cloud.
-
Membuat project Google Cloud:
gcloud projects create PROJECT_ID
Ganti
PROJECT_ID
dengan nama untuk project Google Cloud yang Anda buat. -
Pilih project Google Cloud yang Anda buat:
gcloud config set project PROJECT_ID
Ganti
PROJECT_ID
dengan nama project Google Cloud Anda.
-
-
Pastikan penagihan telah diaktifkan untuk project Google Cloud Anda.
-
Aktifkan API Dataflow, Compute Engine, Cloud Logging, Cloud Storage, JSON Google Cloud Storage, BigQuery, Cloud Pub/Sub, Cloud Datastore, dan Cloud Resource Manager:
gcloud services enable dataflow
compute_component logging storage_component storage_api bigquery pubsub datastore.googleapis.com cloudresourcemanager.googleapis.com -
Buat kredensial autentikasi lokal untuk Akun Google Anda:
gcloud auth application-default login
-
Berikan peran ke Akun Google Anda. Jalankan perintah berikut satu kali untuk setiap peran IAM berikut:
roles/iam.serviceAccountUser
gcloud projects add-iam-policy-binding PROJECT_ID --member="user:EMAIL_ADDRESS" --role=ROLE
- Ganti
PROJECT_ID
dengan project ID Anda. - Ganti
EMAIL_ADDRESS
dengan alamat email Anda. - Ganti
ROLE
dengan setiap peran individual.
- Ganti
Berikan peran ke akun layanan default Compute Engine Anda. Jalankan perintah berikut sekali untuk setiap peran IAM berikut:
roles/dataflow.admin
roles/dataflow.worker
roles/storage.objectAdmin
gcloud projects add-iam-policy-binding PROJECT_ID --member="serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com" --role=SERVICE_ACCOUNT_ROLE
- Ganti
PROJECT_ID
dengan project ID Anda. - Ganti
PROJECT_NUMBER
dengan nomor project Anda. Untuk menemukan nomor project Anda, lihat Identify projects atau gunakan perintahgcloud projects describe
. - Ganti
SERVICE_ACCOUNT_ROLE
dengan setiap peran individual.
-
Buat bucket Cloud Storage dan konfigurasikan sebagai berikut:
-
Tetapkan kelas penyimpanan ke
S
(Standar). -
Tetapkan lokasi penyimpanan sebagai berikut:
US
(Amerika Serikat). -
Ganti
BUCKET_NAME
dengan nama bucket yang unik. Jangan sertakan informasi sensitif pada nama bucket karena namespace bucket bersifat global dan dapat dilihat publik.
gcloud storage buckets create gs://BUCKET_NAME --default-storage-class STANDARD --location US
-
Tetapkan kelas penyimpanan ke
- Salin kode berikut sesuai kebutuhan Anda di bagian selanjutnya:
- Nama bucket Cloud Storage Anda.
- ID Project Google Cloud Anda. Untuk menemukan ID ini, lihat Mengidentifikasi project.
- Download dan instal
Java Development Kit (JDK) versi 11. (Dataflow terus mendukung versi 8.) Pastikan variabel lingkungan
JAVA_HOME
telah ditetapkan dan mengarah ke penginstalan JDK Anda. - Download dan instal Apache Maven dengan mengikuti panduan penginstalan Maven untuk sistem operasi khusus Anda.
Mendapatkan kode pipeline
Apache Beam SDK adalah model pemrograman open source untuk pipeline pemrosesan data. Anda menentukan pipeline ini dengan program Apache Beam dan dapat memilih runner, seperti Dataflow, untuk menjalankan pipeline.
- Di shell atau terminal, gunakan
Plugin Archetype Maven untuk membuat project Maven di komputer yang
berisi contoh
WordCount
Apache Beam SDK:mvn archetype:generate \ -DarchetypeGroupId=org.apache.beam \ -DarchetypeArtifactId=beam-sdks-java-maven-archetypes-examples \ -DarchetypeVersion=2.55.1 \ -DgroupId=org.example \ -DartifactId=word-count-beam \ -Dversion="0.1" \ -Dpackage=org.apache.beam.examples \ -DinteractiveMode=false
Perintah ini membuat direktori baru bernama
word-count-beam
pada direktori Anda saat ini. Direktoriword-count-beam
berisi filepom.xml
sederhana dan serangkaian pipeline contoh yang menghitung kata dalam file teks. - Pastikan direktori
word-count-beam
Anda berisi filepom.xml
:Linux atau macOS
cd word-count-beam/ ls
Output-nya adalah sebagai berikut:
pom.xml src
Windows
cd word-count-beam/ dir
Output-nya adalah sebagai berikut:
pom.xml src
- Pastikan project Maven Anda berisi contoh pipeline:
Linux atau macOS
ls src/main/java/org/apache/beam/examples/
Output-nya adalah sebagai berikut:
DebuggingWordCount.java WindowedWordCount.java common MinimalWordCount.java WordCount.java
Windows
dir src/main/java/org/apache/beam/examples/
Output-nya adalah sebagai berikut:
DebuggingWordCount.java WindowedWordCount.java common MinimalWordCount.java WordCount.java
Untuk pengantar mendetail mengenai konsep Apache Beam yang digunakan dalam contoh ini, lihat Contoh WordCount Apache Beam. Petunjuk di bagian berikutnya menggunakan
WordCount.java
.
Menjalankan pipeline secara lokal
- Di shell atau terminal, jalankan pipeline
WordCount
secara lokal dari direktoriword-count-beam
:mvn compile exec:java \ -Dexec.mainClass=org.apache.beam.examples.WordCount \ -Dexec.args="--output=counts"
File output memiliki awalan
counts
dan ditulis ke direktoriword-count-beam
. Elemen ini berisi kata unik dari teks input dan jumlah kemunculan setiap kata.
Menjalankan pipeline di layanan Dataflow
- Di shell atau terminal, build dan jalankan pipeline
WordCount
di layanan Dataflow dari direktoriword-count-beam
Anda:mvn -Pdataflow-runner compile exec:java \ -Dexec.mainClass=org.apache.beam.examples.WordCount \ -Dexec.args="--project=PROJECT_ID \ --gcpTempLocation=gs://BUCKET_NAME/temp/ \ --output=gs://BUCKET_NAME/output \ --runner=DataflowRunner \ --region=REGION"
Ganti kode berikut:
PROJECT_ID
: project ID Google Cloud AndaBUCKET_NAME
: nama bucket Cloud Storage AndaREGION
: Region Dataflow, sepertius-central1
Lihat hasil Anda
Di konsol Google Cloud, buka halaman Jobs Dataflow.
Buka TugasHalaman Lowongan menampilkan detail semua pekerjaan yang tersedia, termasuk statusnya. Status tugas wordcount terlebih dahulu adalah Running, lalu diperbarui ke Succeeded.
Di konsol Google Cloud, buka halaman Buckets Cloud Storage.
Buka BucketHalaman Buckets menampilkan daftar semua bucket penyimpanan dalam project Anda.
- Klik bucket penyimpanan yang Anda buat.
Halaman Detail bucket menampilkan file output dan file staging yang dibuat oleh tugas Dataflow Anda.
Pembersihan
Agar tidak menimbulkan biaya pada akun Google Cloud Anda untuk resource yang digunakan pada halaman ini, hapus project Google Cloud yang berisi resource tersebut.
Menghapus project
Cara termudah untuk menghilangkan penagihan adalah dengan menghapus project Google Cloud yang Anda buat untuk panduan memulai.
- Di konsol Google Cloud, buka halaman Manage resource.
- Pada daftar project, pilih project yang ingin Anda hapus, lalu klik Delete.
- Pada dialog, ketik project ID, lalu klik Shut down untuk menghapus project.
Menghapus resource satu per satu
Jika Anda ingin mempertahankan project Google Cloud yang digunakan dalam panduan memulai ini, hapus setiap resource-nya:
- Di konsol Google Cloud, buka halaman Buckets Cloud Storage.
- Klik kotak centang untuk bucket yang ingin Anda dihapus.
- Untuk menghapus bucket, klik Hapus, lalu ikuti petunjuk.
Cabut peran yang Anda berikan ke akun layanan default Compute Engine. Jalankan perintah berikut sekali untuk setiap peran IAM berikut:
roles/dataflow.admin
roles/dataflow.worker
roles/storage.objectAdmin
gcloud projects remove-iam-policy-binding PROJECT_ID \ --member=serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com \ --role=SERVICE_ACCOUNT_ROLE
-
Opsional: Cabut kredensial autentikasi yang Anda buat, dan hapus file kredensial lokal.
gcloud auth application-default revoke
-
Opsional: Cabut kredensial dari gcloud CLI.
gcloud auth revoke
Langkah selanjutnya
- Pelajari model pemrograman Apache Beam.
- Pelajari cara menggunakan Apache Beam untuk membangun pipeline.
- Pelajari contoh WordCount dan Game Seluler.