BigQuery menghosting sejumlah set data publik yang tersedia bagi masyarakat umum untuk melakukan kueri. Dalam tutorial ini, Anda akan membuat alur kerja yang menjalankan beberapa tugas kueri BigQuery secara paralel. Ini akan menunjukkan peningkatan performa jika dibandingkan dengan menjalankan tugas secara berurutan, satu demi satu.
Tujuan
Dalam tutorial ini, Anda akan:- Jalankan kueri terhadap set data publik Wikipedia untuk menentukan judul yang paling sering dilihat pada bulan tertentu.
- Men-deploy dan menjalankan alur kerja yang menjalankan beberapa tugas kueri BigQuery secara berurutan, satu demi satu.
- Deploy dan jalankan alur kerja yang menjalankan tugas BigQuery
menggunakan iterasi paralel,
dan tempat loop
for
biasa dijalankan secara paralel.
Anda dapat menjalankan perintah berikut di Konsol Google Cloud, atau dengan menggunakan Google Cloud CLI di terminal atau Cloud Shell.
Biaya
Dalam dokumen ini, Anda menggunakan komponen Google Cloud yang dapat ditagih berikut:
Untuk membuat perkiraan biaya berdasarkan proyeksi penggunaan Anda,
gunakan kalkulator harga.
Sebelum memulai
Batasan keamanan yang ditentukan oleh organisasi mungkin mencegah Anda menyelesaikan langkah-langkah berikut. Untuk mengetahui informasi pemecahan masalah, lihat Mengembangkan aplikasi di lingkungan Google Cloud yang terbatas.
Konsol
- 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.
-
Di konsol Google Cloud, pada halaman pemilih project, pilih atau buat project Google Cloud.
-
Pastikan penagihan telah diaktifkan untuk project Google Cloud Anda.
-
Aktifkan API Workflows.
-
Buat akun layanan:
-
Di konsol Google Cloud, buka halaman Buat akun layanan.
Buka Create service account - Pilih project Anda.
-
Di kolom Nama akun layanan, masukkan nama. Konsol Google Cloud akan mengisi kolom ID akun layanan berdasarkan nama ini.
Di kolom Deskripsi akun layanan, masukkan sebuah deskripsi. Sebagai contoh,
Service account for quickstart
. - Klik Buat dan lanjutkan.
-
Berikan peran berikut ke akun layanan: BigQuery > BigQuery Job User, Logging > Logs Writer.
Untuk memberikan peran, temukan daftar Pilih peran, lalu pilih peran.
Untuk memberikan peran tambahan, klik
Tambahkan peran lain, lalu tambahkan setiap peran tambahan. - Klik Lanjutkan.
-
Klik Selesai untuk menyelesaikan pembuatan akun layanan.
-
-
Di konsol Google Cloud, pada halaman pemilih project, pilih atau buat project Google Cloud.
-
Pastikan penagihan telah diaktifkan untuk project Google Cloud Anda.
-
Aktifkan API Workflows.
-
Buat akun layanan:
-
Di konsol Google Cloud, buka halaman Buat akun layanan.
Buka Create service account - Pilih project Anda.
-
Di kolom Nama akun layanan, masukkan nama. Konsol Google Cloud akan mengisi kolom ID akun layanan berdasarkan nama ini.
Di kolom Deskripsi akun layanan, masukkan sebuah deskripsi. Sebagai contoh,
Service account for quickstart
. - Klik Buat dan lanjutkan.
-
Berikan peran berikut ke akun layanan: BigQuery > BigQuery Job User, Logging > Logs Writer.
Untuk memberikan peran, temukan daftar Pilih peran, lalu pilih peran.
Untuk memberikan peran tambahan, klik
Tambahkan peran lain, lalu tambahkan setiap peran tambahan. - Klik Lanjutkan.
-
Klik Selesai untuk menyelesaikan pembuatan akun layanan.
-
gcloud
-
Login ke Akun Google Anda.
Jika Anda belum memilikinya, Daftar untuk membuat akun baru.
- 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 Workflows:
gcloud services enable workflows.googleapis.com
-
Menyiapkan autentikasi:
-
Buat akun layanan:
gcloud iam service-accounts create SERVICE_ACCOUNT_NAME
Ganti
SERVICE_ACCOUNT_NAME
dengan nama untuk akun layanan. -
Memberikan peran ke akun layanan. Jalankan perintah berikut satu kali untuk setiap peran IAM berikut:
roles/bigquery.jobUser, roles/logging.logWriter
:gcloud projects add-iam-policy-binding PROJECT_ID --member="serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com" --role=ROLE
Ganti kode berikut:
SERVICE_ACCOUNT_NAME
: nama dari akun layanan.PROJECT_ID
: project ID dimana Anda membuat akun layananROLE
: peran yang akan diberikan
-
- 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 Workflows:
gcloud services enable workflows.googleapis.com
-
Menyiapkan autentikasi:
-
Buat akun layanan:
gcloud iam service-accounts create SERVICE_ACCOUNT_NAME
Ganti
SERVICE_ACCOUNT_NAME
dengan nama untuk akun layanan. -
Memberikan peran ke akun layanan. Jalankan perintah berikut satu kali untuk setiap peran IAM berikut:
roles/bigquery.jobUser, roles/logging.logWriter
:gcloud projects add-iam-policy-binding PROJECT_ID --member="serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com" --role=ROLE
Ganti kode berikut:
SERVICE_ACCOUNT_NAME
: nama dari akun layanan.PROJECT_ID
: project ID dimana Anda membuat akun layananROLE
: peran yang akan diberikan
-
Menjalankan tugas kueri BigQuery
Di BigQuery, Anda dapat menjalankan tugas kueri interaktif (sesuai permintaan). Untuk mengetahui informasi selengkapnya, lihat Menjalankan tugas kueri batch dan interaktif.
Konsol
Di konsol Google Cloud, buka halaman BigQuery.
Masukkan kueri SQL BigQuery berikut di area teks Editor kueri:
SELECT TITLE, SUM(views) FROM `bigquery-samples.wikipedia_pageviews.201207h` GROUP BY TITLE ORDER BY SUM(views) DESC LIMIT 100
Klik Run.
bq
Di terminal Anda, masukkan perintah bq query
berikut untuk menjalankan
kueri interaktif menggunakan sintaksis SQL standar:
bq query \
--use_legacy_sql=false \
'SELECT
TITLE, SUM(views)
FROM
`bigquery-samples.wikipedia_pageviews.201207h`
GROUP BY
TITLE
ORDER BY
SUM(views) DESC
LIMIT 100'
Tindakan ini menjalankan kueri yang menampilkan 100 judul Wikipedia teratas dengan penayangan terbanyak pada bulan tertentu dan menulis output ke tabel sementara.
Perhatikan berapa lama waktu yang dibutuhkan untuk menjalankan kueri.
Men-deploy alur kerja yang menjalankan beberapa kueri secara berurutan
Definisi alur kerja terdiri dari serangkaian langkah yang dijelaskan menggunakan sintaksis alur kerja. Setelah membuat alur kerja, Anda men-deploy-nya agar tersedia untuk dieksekusi. Langkah deployment juga memvalidasi bahwa file sumber dapat dijalankan.
Alur kerja berikut menentukan daftar lima tabel untuk menjalankan kueri menggunakan konektor BigQuery Workflows. Kueri dijalankan secara berurutan, satu demi satu, dan judul yang paling sering dilihat dari setiap tabel akan disimpan ke peta hasil.
Konsol
Di konsol Google Cloud, buka halaman Workflows:
Klik Create.
Masukkan nama untuk alur kerja baru, seperti
workflow-serial-bqjobs
.Pilih region yang sesuai; misalnya, us-central1.
Pilih akun layanan yang telah dibuat sebelumnya.
Anda seharusnya sudah memberikan peran IAM BigQuery > BigQuery Job User dan Logging > Logs Writer ke akun layanan.
Klik Next.
Di editor alur kerja, masukkan definisi berikut untuk alur kerja Anda:
Klik Deploy.
gcloud
Buka terminal dan buat file kode sumber untuk alur kerja Anda:
touch workflow-serial-bqjobs.yaml
Salin alur kerja berikut ke file kode sumber Anda:
Deploy alur kerja dengan memasukkan perintah berikut:
gcloud workflows deploy workflow-serial-bqjobs \ --source=workflow-serial-bqjobs.yaml \ --service-account=MY_SERVICE_ACCOUNT@MY_PROJECT.IAM.GSERVICEACCOUNT.COM
Ganti
MY_SERVICE_ACCOUNT@MY_PROJECT.IAM.GSERVICEACCOUNT.COM
dengan email akun layanan yang Anda buat sebelumnya.Anda seharusnya sudah memberikan peran IAM
roles/bigquery.jobUser
danroles/logging.logWriter
ke akun layanan.
Menjalankan alur kerja dan menjalankan beberapa kueri secara berurutan
Mengeksekusi alur kerja akan menjalankan definisi alur kerja saat ini yang terkait dengan alur kerja.
Konsol
Di konsol Google Cloud, buka halaman Workflows:
Di halaman Workflows, pilih alur kerja workflow-serial-bqjobs untuk membuka halaman detailnya.
Di halaman Workflow Details, klik play_arrow Execute.
Klik Execute lagi.
Lihat hasil alur kerja di panel Output.
gcloud
Buka terminal.
Menjalankan alur kerja:
gcloud workflows run workflow-serial-bqjob
Eksekusi alur kerja akan memerlukan waktu sekitar satu atau lima kali waktu berjalan sebelumnya. Hasilnya akan menyertakan setiap tabel dan terlihat seperti berikut:
{
"201201h": {
"title": "Special:Search",
"views": "14591339"
},
"201202h": {
"title": "Special:Search",
"views": "132765420"
},
"201203h": {
"title": "Special:Search",
"views": "123316818"
},
"201204h": {
"title": "Special:Search",
"views": "116830614"
},
"201205h": {
"title": "Special:Search",
"views": "131357063"
}
}
Men-deploy dan menjalankan alur kerja yang menjalankan beberapa kueri secara paralel
Daripada menjalankan lima kueri secara berurutan, Anda dapat menjalankan kueri tersebut secara paralel dengan membuat beberapa perubahan:
- runQueries:
parallel:
shared: [results]
for:
value: table
in: ${tables}
- Langkah
parallel
memungkinkan setiap iterasi loopfor
berjalan secara paralel. Variabel
results
dideklarasikan sebagaishared
yang memungkinkannya dapat ditulis oleh cabang, dan hasil dari setiap cabang dapat ditambahkan ke variabel tersebut.
Konsol
Di konsol Google Cloud, buka halaman Workflows:
Klik Create.
Masukkan nama untuk alur kerja baru, seperti
workflow-parallel-bqjobs
.Pilih region yang sesuai; misalnya, us-central1.
Pilih akun layanan yang telah dibuat sebelumnya.
Klik Next.
Di editor alur kerja, masukkan definisi berikut untuk alur kerja Anda:
Klik Deploy.
Di halaman Workflow Details, klik play_arrow Execute.
Klik Execute lagi.
Lihat hasil alur kerja di panel Output.
gcloud
Buka terminal dan buat file kode sumber untuk alur kerja Anda:
touch workflow-parallel-bqjobs.yaml
Salin alur kerja berikut ke file kode sumber Anda:
Deploy alur kerja dengan memasukkan perintah berikut:
gcloud workflows deploy workflow-parallell-bqjobs \ --source=workflow-parallel-bqjobs.yaml \ --service-account=MY_SERVICE_ACCOUNT@MY_PROJECT.IAM.GSERVICEACCOUNT.COM
Ganti
MY_SERVICE_ACCOUNT@MY_PROJECT.IAM.GSERVICEACCOUNT.COM
dengan email akun layanan yang Anda buat sebelumnya.Menjalankan alur kerja:
gcloud workflows run workflow-serial-bqjob
Hasilnya akan mirip dengan output sebelumnya, tetapi eksekusi alur kerja akan memerlukan waktu sekitar dua puluh detik atau kurang.
Pembersihan
Jika Anda membuat project baru untuk tutorial ini, hapus project tersebut. Jika Anda menggunakan project yang ada dan ingin mempertahankannya tanpa perubahan yang ditambahkan dalam tutorial ini, hapus resource yang dibuat untuk tutorial.
Menghapus project
Cara termudah untuk menghilangkan penagihan adalah dengan menghapus project yang Anda buat untuk tutorial.
Untuk menghapus project:
- 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 tutorial
Hapus alur kerja yang dibuat dalam tutorial ini:
gcloud workflows delete WORKFLOW_NAME
Langkah selanjutnya
- Untuk mempelajari langkah paralel lebih lanjut, lihat Menjalankan langkah paralel.
- Untuk mempelajari konektor Workflows lebih lanjut, lihat Memahami konektor.
- Untuk mempelajari Workflows lebih lanjut, lihat Ringkasan alur kerja.