Menghubungkan Databricks ke BigQuery

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.

  1. Untuk menyiapkan akun Databricks, ikuti petunjuk dalam dokumentasi Databricks, Menyiapkan akun Databricks di Google Cloud Google Cloud.
  2. 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.

  1. Konfirmasi prasyarat Databrick.

  2. Buat workspace pertama Anda. Di konsol akun Databricks, klik Buat Workspace.

  3. Tentukan gcp-bq untuk Nama Workspace, lalu pilih Region Anda.

    Buat layar Workspace dengan nama, region, dan ID project Google Cloud

  4. Untuk menentukan ID project Google Cloud Anda, buka konsol, Google Cloud lalu salin nilainya ke kolom ID projectGoogle Cloud .

    Buka Google Cloud konsol

  5. Klik Simpan untuk membuat workspace Databricks Anda.

  6. 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.

  7. Tentukan nama cluster dan ukurannya, lalu klik Opsi Lanjutan dan tentukan alamat email akun layanan Google CloudAnda.

    Platform Cluster baru dengan detail Akun Layanan Google

  8. Klik Buat Cluster.

  9. 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:

  1. 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.

  2. 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
    
    

    jumlah kata dalam grafik batang shakespeare

    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.

  3. 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 disebut mdataset 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:

  1. Buka halaman BigQuery di konsol Google Cloud .

    Buka BigQuery

  2. Luaskan opsi Tindakan, klik Buat set data, lalu beri nama together.

  3. 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())
    
  4. Tambahkan sel lain ke notebook Anda yang menulis frame data Spark dari langkah sebelumnya ke tabel BigQuery myTable di set data together. 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()
    
  5. 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)