Tutorial ini menunjukkan cara menghubungkan tabel atau tampilan BigQuery untuk membaca dan menulis data dari notebook Databricks. Langkah-langkah
ini dijelaskan menggunakan
konsolGoogle Cloud dan
Databricks Workspaces.
Anda juga dapat melakukan langkah-langkah ini menggunakan alat command line gcloud
dan databricks
, meskipun panduan tersebut berada di luar cakupan tutorial ini.
Databricks di Google Cloud adalah lingkungan Databricks yang dihosting di Google Cloud, berjalan di Google Kubernetes Engine (GKE) dan menyediakan integrasi bawaan dengan BigQuery serta teknologi Google Cloud lainnya. Jika Anda baru mengenal Databricks, tonton video Pengantar Databricks Unified Data Platform untuk mengetahui ringkasan platform lakehouse Databricks.
Men-deploy Databricks di Google Cloud
Selesaikan langkah-langkah berikut untuk menyiapkan deployment Databricks di Google Cloud.
- Untuk menyiapkan akun Databricks, ikuti petunjuk dalam dokumentasi Databricks, Menyiapkan akun Databricks di Google Cloud Google Cloud.
- Setelah mendaftar, pelajari lebih lanjut cara Mengelola akun Databricks Anda.
Membuat ruang kerja, cluster, dan notebook Databricks
Langkah-langkah berikut menjelaskan cara membuat ruang kerja Databricks, cluster, dan notebook Python untuk menulis kode guna mengakses BigQuery.
Konfirmasi prasyarat Databrick.
Buat workspace pertama Anda. Di konsol akun Databricks, klik Buat Workspace.
Tentukan
gcp-bq
untuk Nama Workspace, lalu pilih Region Anda.Untuk menentukan ID project Google Cloud Anda, buka konsol, Google Cloud lalu salin nilainya ke kolom ID projectGoogle Cloud .
Klik Simpan untuk membuat workspace Databricks Anda.
Untuk membuat cluster Databricks dengan runtime Databricks 7.6 atau yang lebih baru, di panel menu kiri, pilih Cluster, lalu klik Buat Cluster di bagian atas.
Tentukan nama cluster dan ukurannya, lalu klik Opsi Lanjutan dan tentukan alamat email akun layanan Google CloudAnda.
Klik Buat Cluster.
Guna membuat notebook Python untuk Databricks, ikuti petunjuk di Membuat notebook.
Membuat kueri BigQuery dari Databricks
Dengan konfigurasi di atas, Anda dapat menghubungkan Databricks ke BigQuery dengan aman. Databricks menggunakan fork open source Google Spark Adapter untuk mengakses BigQuery.
Databricks mengurangi transfer data dan mempercepat kueri dengan otomatis mendorong predikat kueri tertentu ke bawah, misalnya pemfilteran pada kolom bertingkat ke BigQuery. Selain itu, kemampuan tambahan untuk menjalankan kueri SQL
di BigQuery terlebih dahulu dengan query()
API akan mengurangi ukuran transfer
set data yang dihasilkan.
Langkah-langkah berikut menjelaskan cara mengakses set data di BigQuery dan menulis data Anda sendiri ke BigQuery.
Mengakses set data publik di BigQuery
BigQuery menyediakan daftar set data publik yang tersedia. Untuk membuat kueri terhadap set data BigQuery Shakespeare yang merupakan bagian dari set data publik, ikuti langkah-langkah berikut:
Untuk membaca tabel BigQuery, gunakan cuplikan kode berikut di notebook Databricks Anda.
table = "bigquery-public-data.samples.shakespeare" df = spark.read.format("bigquery").option("table",table).load() df.createOrReplaceTempView("shakespeare")
Jalankan kode dengan menekan
Shift+Return
.Sekarang Anda dapat membuat kueri tabel BigQuery melalui Spark DataFrame (
df
). Misalnya, gunakan cara berikut untuk menampilkan tiga baris pertama frame data:df.show(3)
Untuk membuat kueri tabel lain, perbarui variabel
table
.Fitur utama dari notebook Databricks adalah Anda dapat menggabungkan sel-sel dari berbagai bahasa seperti Scala, Python, dan SQL dalam satu notebook.
Kueri SQL berikut memungkinkan Anda memvisualisasikan jumlah kata di Shakespeare setelah menjalankan sel sebelumnya yang membuat tampilan sementara.
%sql SELECT word, SUM(word_count) AS word_count FROM words GROUP BY word ORDER BY word_count DESC LIMIT 12
Sel di atas menjalankan kueri SQL Spark terhadap frame data di cluster Databricks Anda, bukan di BigQuery. Keuntungan dari pendekatan ini adalah analisis data terjadi di level Spark, tidak ada panggilan BigQuery API yang dikeluarkan, dan Anda tidak dikenai biaya BigQuery tambahan.
Sebagai alternatif, Anda dapat mendelegasikan eksekusi kueri SQL ke BigQuery dengan
query()
API dan mengoptimalkan untuk mengurangi ukuran transfer frame data yang dihasilkan. Tidak seperti contoh di atas, yang pemrosesannya dilakukan di Spark, jika Anda menggunakan pendekatan ini, pengoptimalan harga dan kueri akan berlaku untuk menjalankan kueri di BigQuery.Contoh di bawah ini menggunakan Scala,
query()
API, dan set data Shakespeare publik di BigQuery untuk menghitung lima kata yang paling umum dalam karya Shakespeare. Sebelum menjalankan kode, Anda harus terlebih dahulu membuat set data kosong di BigQuery yang disebutmdataset
yang dapat direferensikan oleh kode tersebut. Untuk mengetahui informasi selengkapnya, lihat Menulis data ke BigQuery.%scala // public dataset val table = "bigquery-public-data.samples.shakespeare" // existing dataset where the Google Cloud user has table creation permission val tempLocation = "mdataset" // query string val q = s"""SELECT word, SUM(word_count) AS word_count FROM ${table} GROUP BY word ORDER BY word_count DESC LIMIT 10 """ // read the result of a GoogleSQL query into a DataFrame val df2 = spark.read.format("bigquery") .option("query", q) .option("materializationDataset", tempLocation) .load() // show the top 5 common words in Shakespeare df2.show(5)
Untuk contoh kode lainnya, lihat notebook contoh BigQuery Databricks.
Menulis data ke BigQuery
Tabel BigQuery tersedia di set data. Sebelum dapat menulis data ke tabel BigQuery, Anda harus membuat set data baru di BigQuery. Untuk membuat set data untuk notebook Python Databricks, ikuti langkah-langkah berikut:
Buka halaman BigQuery di konsol Google Cloud .
Luaskan opsi
Tindakan, klik Buat set data, lalu beri namatogether
.Di notebook Python Databricks, buat frame data Spark sederhana dari daftar Python dengan tiga entri string menggunakan cuplikan kode berikut:
from pyspark.sql.types import StringType mylist = ["Google", "Databricks", "better together"] df = spark.createDataFrame(mylist, StringType())
Tambahkan sel lain ke notebook Anda yang menulis frame data Spark dari langkah sebelumnya ke tabel BigQuery
myTable
di set datatogether
. Tabel akan dibuat atau ditimpa. Gunakan nama bucket yang Anda tentukan sebelumnya.bucket = YOUR_BUCKET_NAME table = "together.myTable" df.write .format("bigquery") .option("temporaryGcsBucket", bucket) .option("table", table) .mode("overwrite").save()
Untuk memverifikasi bahwa Anda telah berhasil menulis data, membuat kueri, dan menampilkan tabel BigQuery melalui DataFrame Spark (
df
):display(spark.read.format("bigquery").option("table", table).load)