BigQuery menghosting sejumlah set data publik yang tersedia untuk dikueri oleh publik. Dalam tutorial ini, Anda akan membuat alur kerja yang menjalankan beberapa tugas kueri BigQuery secara paralel, yang menunjukkan peningkatan performa jika dibandingkan dengan menjalankan tugas secara berurutan, satu per satu.
Tujuan
Dalam tutorial ini, Anda akan:- Jalankan kueri terhadap set data publik Wikipedia untuk menentukan judul yang paling banyak dilihat dalam bulan tertentu.
- Deploy dan jalankan alur kerja yang menjalankan beberapa tugas kueri BigQuery secara berurutan, satu per satu.
- Deploy dan jalankan alur kerja yang menjalankan tugas BigQuery
menggunakan iterasi paralel,
dan tempat loop
forbiasa dijalankan secara paralel.
Anda dapat menjalankan perintah berikut di konsol Google Cloud , atau menggunakan Google Cloud CLI di terminal atau Cloud Shell.
Biaya
Dalam dokumen ini, Anda akan menggunakan komponen Google Cloudyang 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.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Enable the Workflows API.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.-
Create a service account:
-
Ensure that you have the Create Service Accounts IAM role
(
roles/iam.serviceAccountCreator) and the Project IAM Admin role (roles/resourcemanager.projectIamAdmin). Learn how to grant roles. -
In the Google Cloud console, go to the Create service account page.
Go to Create service account - Select your project.
-
In the Service account name field, enter a name. The Google Cloud console fills in the Service account ID field based on this name.
In the Service account description field, enter a description. For example,
Service account for quickstart. - Click Create and continue.
-
Grant the following roles to the service account: BigQuery > BigQuery Job User, Logging > Logs Writer.
To grant a role, find the Select a role list, then select the role.
To grant additional roles, click Add another role and add each additional role.
- Click Continue.
-
Click Done to finish creating the service account.
-
Ensure that you have the Create Service Accounts IAM role
(
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Enable the Workflows API.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.-
Create a service account:
-
Ensure that you have the Create Service Accounts IAM role
(
roles/iam.serviceAccountCreator) and the Project IAM Admin role (roles/resourcemanager.projectIamAdmin). Learn how to grant roles. -
In the Google Cloud console, go to the Create service account page.
Go to Create service account - Select your project.
-
In the Service account name field, enter a name. The Google Cloud console fills in the Service account ID field based on this name.
In the Service account description field, enter a description. For example,
Service account for quickstart. - Click Create and continue.
-
Grant the following roles to the service account: BigQuery > BigQuery Job User, Logging > Logs Writer.
To grant a role, find the Select a role list, then select the role.
To grant additional roles, click Add another role and add each additional role.
- Click Continue.
-
Click Done to finish creating the service account.
-
Ensure that you have the Create Service Accounts IAM role
(
gcloud
-
Login ke Akun Google Anda.
Jika Anda belum memilikinya, Daftar untuk membuat akun baru.
-
Instal Google Cloud CLI.
-
Jika Anda menggunakan penyedia identitas (IdP) eksternal, Anda harus login ke gcloud CLI dengan identitas gabungan Anda terlebih dahulu.
-
Untuk melakukan inisialisasi gcloud CLI, jalankan perintah berikut:
gcloud init -
Buat atau pilih Google Cloud project.
Peran yang diperlukan untuk memilih atau membuat project
- Pilih project: Memilih project tidak memerlukan peran IAM tertentu—Anda dapat memilih project mana pun yang telah diberi peran.
-
Membuat project: Untuk membuat project, Anda memerlukan peran Pembuat Project
(
roles/resourcemanager.projectCreator), yang berisi izinresourcemanager.projects.create. Pelajari cara memberikan peran.
-
Buat Google Cloud project:
gcloud projects create PROJECT_ID
Ganti
PROJECT_IDdengan nama untuk Google Cloud project yang Anda buat. -
Pilih project Google Cloud yang Anda buat:
gcloud config set project PROJECT_ID
Ganti
PROJECT_IDdengan nama project Google Cloud Anda.
-
Verifikasi bahwa penagihan diaktifkan untuk project Google Cloud Anda.
Aktifkan Workflows API:
Peran yang diperlukan untuk mengaktifkan API
Untuk mengaktifkan API, Anda memerlukan peran IAM Service Usage Admin (
roles/serviceusage.serviceUsageAdmin), yang berisi izinserviceusage.services.enable. Pelajari cara memberikan peran.gcloud services enable workflows.googleapis.com
-
Menyiapkan autentikasi:
-
Pastikan Anda memiliki peran IAM Create Service Accounts
(
roles/iam.serviceAccountCreator) dan peran IAM Project IAM Admin (roles/resourcemanager.projectIamAdmin). Pelajari cara memberikan peran. -
Buat akun layanan:
gcloud iam service-accounts create SERVICE_ACCOUNT_NAME
Ganti
SERVICE_ACCOUNT_NAMEdengan 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
-
Pastikan Anda memiliki peran IAM Create Service Accounts
(
-
Instal Google Cloud CLI.
-
Jika Anda menggunakan penyedia identitas (IdP) eksternal, Anda harus login ke gcloud CLI dengan identitas gabungan Anda terlebih dahulu.
-
Untuk melakukan inisialisasi gcloud CLI, jalankan perintah berikut:
gcloud init -
Buat atau pilih Google Cloud project.
Peran yang diperlukan untuk memilih atau membuat project
- Pilih project: Memilih project tidak memerlukan peran IAM tertentu—Anda dapat memilih project mana pun yang telah diberi peran.
-
Membuat project: Untuk membuat project, Anda memerlukan peran Pembuat Project
(
roles/resourcemanager.projectCreator), yang berisi izinresourcemanager.projects.create. Pelajari cara memberikan peran.
-
Buat Google Cloud project:
gcloud projects create PROJECT_ID
Ganti
PROJECT_IDdengan nama untuk Google Cloud project yang Anda buat. -
Pilih project Google Cloud yang Anda buat:
gcloud config set project PROJECT_ID
Ganti
PROJECT_IDdengan nama project Google Cloud Anda.
-
Verifikasi bahwa penagihan diaktifkan untuk project Google Cloud Anda.
Aktifkan Workflows API:
Peran yang diperlukan untuk mengaktifkan API
Untuk mengaktifkan API, Anda memerlukan peran IAM Service Usage Admin (
roles/serviceusage.serviceUsageAdmin), yang berisi izinserviceusage.services.enable. Pelajari cara memberikan peran.gcloud services enable workflows.googleapis.com
-
Menyiapkan autentikasi:
-
Pastikan Anda memiliki peran IAM Create Service Accounts
(
roles/iam.serviceAccountCreator) dan peran IAM Project IAM Admin (roles/resourcemanager.projectIamAdmin). Pelajari cara memberikan peran. -
Buat akun layanan:
gcloud iam service-accounts create SERVICE_ACCOUNT_NAME
Ganti
SERVICE_ACCOUNT_NAMEdengan 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
-
Pastikan Anda memiliki peran IAM Create Service Accounts
(
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 Query editor:
SELECT TITLE, SUM(views) FROM `bigquery-samples.wikipedia_pageviews.201207h` GROUP BY TITLE ORDER BY SUM(views) DESC LIMIT 100Klik Run.
bq
Di terminal, 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'
Kueri ini menjalankan kueri yang menampilkan 100 judul Wikipedia teratas dengan jumlah penayangan terbanyak dalam bulan tertentu dan menulis output ke tabel sementara.
Perhatikan berapa lama kueri berjalan.
Men-deploy alur kerja yang menjalankan beberapa kueri secara berurutan
Definisi alur kerja terdiri dari serangkaian langkah yang dijelaskan menggunakan sintaksis Workflows. Setelah membuat alur kerja, Anda men-deploy alur kerja tersebut agar tersedia untuk dieksekusi. Langkah deploy juga memvalidasi bahwa file sumber dapat dieksekusi.
Alur kerja berikut menentukan daftar lima tabel untuk menjalankan kueri menggunakan Workflows BigQuery connector. Kueri dijalankan secara berurutan, satu per satu, dan judul yang paling banyak dilihat dari setiap tabel 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 Anda buat sebelumnya.
Anda seharusnya telah memberikan peran IAM BigQuery > BigQuery Job User dan Logging > Logs Writer ke akun layanan.
Klik Berikutnya.
Di editor alur kerja, masukkan definisi berikut untuk alur kerja Anda:
Klik Deploy.
gcloud
Buka terminal, lalu buat file kode sumber untuk alur kerja Anda:
touch workflow-serial-bqjobs.yamlSalin 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.comdengan email akun layanan yang Anda buat sebelumnya.Anda seharusnya telah memberikan peran IAM
roles/bigquery.jobUserdanroles/logging.logWriterke akun layanan.
Jalankan alur kerja dan jalankan 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.
Jalankan alur kerja:
gcloud workflows run workflow-serial-bqjob
Eksekusi alur kerja akan memerlukan waktu sekitar satu menit atau lima kali waktu berjalan sebelumnya. Hasilnya akan menyertakan setiap tabel dan terlihat mirip dengan berikut ini:
{
"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 secara paralel dengan melakukan beberapa perubahan:
- runQueries:
parallel:
shared: [results]
for:
value: table
in: ${tables}
- Langkah
parallelmemungkinkan setiap iterasi loopforberjalan secara paralel. Variabel
resultsdideklarasikan sebagaisharedyang memungkinkannya dapat ditulis oleh cabang, dan hasil 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 Anda buat sebelumnya.
Klik Berikutnya.
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, lalu buat file kode sumber untuk alur kerja Anda:
touch workflow-parallel-bqjobs.yamlSalin 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.comdengan email akun layanan yang Anda buat sebelumnya.Jalankan alur kerja:
gcloud workflows run workflow-parallel-bqjobs
Hasilnya akan mirip dengan output sebelumnya, tetapi eksekusi alur kerja seharusnya memakan 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 resources.
- 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 berikutnya
- 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 Workflows.