Bagikan melalui


Menjalankan kueri federasi di Google BigQuery

Artikel ini menjelaskan cara menyiapkan Federasi Lakehouse untuk menjalankan kueri federasi pada data BigQuery yang tidak dikelola oleh Azure Databricks. Untuk mempelajari selengkapnya tentang Federasi Lakehouse, lihat Apa itu Federasi Lakehouse?.

Untuk menyambungkan ke basis data BigQuery Anda menggunakan Lakehouse Federation, Anda harus membuat hal-hal berikut di metastore Azure Databricks Unity Catalog Anda.

  • Koneksi ke database BigQuery Anda.
  • Katalog asing yang mencerminkan database BigQuery Anda di Unity Catalog sehingga Anda dapat menggunakan sintaks kueri Katalog Unity dan alat tata kelola data untuk mengelola akses pengguna Azure Databricks ke database.

Sebelum Anda mulai

Persyaratan ruang kerja:

  • Ruang kerja diaktifkan untuk Katalog Unity.

Persyaratan komputasi:

  • Konektivitas jaringan dari kluster Databricks Runtime atau gudang SQL Anda ke sistem database target. Lihat Rekomendasi jaringan untuk Federasi Lakehouse.
  • Kluster Azure Databricks harus menggunakan Databricks Runtime 16.1 atau lebih tinggi dan mode akses pengguna bersama atau tunggal.
  • Gudang SQL harus Pro atau Tanpa Server.

Izin yang diperlukan:

  • Untuk membuat koneksi, Anda harus menjadi admin metastore atau pengguna dengan hak istimewa CREATE CONNECTION pada metastore Unity Catalog yang terhubung ke ruang kerja.
  • Untuk membuat katalog asing, Anda harus memiliki izin CREATE CATALOG di metastore dan menjadi pemilik koneksi atau memiliki hak istimewa CREATE FOREIGN CATALOG pada koneksi.

Persyaratan izin tambahan ditentukan di setiap bagian berbasis tugas yang mengikuti.

Buat sambungan

Koneksi menentukan jalur dan kredensial untuk mengakses sistem database eksternal. Untuk membuat koneksi, Anda bisa menggunakan Catalog Explorer atau perintah SQL CREATE CONNECTION di buku catatan Azure Databricks atau editor kueri Databricks SQL.

Catatan

Anda juga dapat menggunakan Databricks REST API atau Databricks CLI untuk membuat koneksi. Lihat POST /api/2.1/unity-catalog/connections dan perintah Unity Catalog.

Izin diperlukan: Admin atau pengguna Metastore dengan CREATE CONNECTION hak istimewa.

Penjelajah Katalog

  1. Di ruang kerja Azure Databricks Anda, klik ikon Katalog Katalog.

  2. Di bagian atas panel Katalog , klik ikon Tambahkan atau plusikon Tambahkan dan pilih Tambahkan koneksi dari menu.

    Atau, dari halaman akses cepat, klik tombol Data eksternal , buka tab Koneksi, dan klikBuat koneksi .

  3. Di halaman Koneksi dasar-dasar pada wizard Menyiapkan koneksi, masukkan nama Koneksi yang ramah pengguna.

  4. Pilih Jenis koneksi dari Google BigQuery, lalu klik Berikutnya.

  5. Di halaman Autentikasi, masukkan kunci json akun layanan Google untuk instans BigQuery Anda.

    Ini adalah objek JSON mentah yang digunakan untuk menentukan proyek BigQuery dan menyediakan autentikasi. Anda dapat membuat objek JSON ini dan mengunduhnya dari halaman detail akun layanan di Google Cloud di bagian 'KEYS'. Akun layanan harus memiliki izin yang tepat yang diberikan di BigQuery, termasuk Pengguna BigQuery dan BigQuery Data Viewer. Berikut adalah contohnya.

    {
      "type": "service_account",
      "project_id": "PROJECT_ID",
      "private_key_id": "KEY_ID",
      "private_key": "PRIVATE_KEY",
      "client_email": "SERVICE_ACCOUNT_EMAIL",
      "client_id": "CLIENT_ID",
      "auth_uri": "https://accounts.google.com/o/oauth2/auth",
      "token_uri": "https://accounts.google.com/o/oauth2/token",
      "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
      "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/SERVICE_ACCOUNT_EMAIL",
      "universe_domain": "googleapis.com"
    }
    
  6. (Opsional) Masukkan ID Proyek untuk instans BigQuery Anda:

    Ini adalah nama untuk proyek BigQuery yang digunakan untuk penagihan untuk semua kueri yang dijalankan di bawah koneksi ini. Default ke ID proyek akun layanan Anda. Akun layanan harus memiliki izin yang tepat yang diberikan untuk proyek ini di BigQuery, termasuk BigQuery User. Himpunan data tambahan yang digunakan untuk menyimpan tabel sementara oleh BigQuery mungkin dibuat dalam proyek ini.

  7. (Opsional) Tambahkan komentar.

  8. Klik Buat koneksi.

  9. Pada halaman dasar-dasar Catalog, masukkan nama untuk katalog asing. Katalog asing mencerminkan database dalam sistem data eksternal sehingga Anda dapat mengkueri dan mengelola akses ke data dalam database tersebut menggunakan Azure Databricks dan Unity Catalog.

  10. (Opsional) Klik Uji koneksi untuk mengonfirmasi bahwa koneksi berfungsi.

  11. Klik Buat katalog.

  12. Pada halaman Access, pilih ruang kerja tempat pengguna dapat mengakses katalog yang Anda buat. Anda dapat memilih Semua ruang kerja memiliki akses, atau klik Tetapkan ke ruang kerja, pilih ruang kerja, lalu klik Tetapkan.

  13. Ubah Pemilik yang akan dapat mengelola akses ke semua objek dalam katalog. Mulai ketik prinsipal dalam kotak teks, lalu klik prinsipal dalam hasil yang dikembalikan.

  14. Berikan Hak Istimewa pada katalog. Klik Pemberian:

    1. Tentukan Prinsipal yang akan memiliki akses ke objek dalam katalog. Mulai ketik prinsipal dalam kotak teks, lalu klik prinsipal dalam hasil yang dikembalikan.
    2. Pilih preset Privilege untuk diberikan kepada setiap prinsipal. Semua pengguna akun diberikan BROWSE secara default.
      • Pilih Pembaca Data dari menu drop-down untuk memberikan hak akses read pada objek dalam katalog.
      • Pilih Editor Data dari menu drop-down untuk memberikan hak istimewa dan pada objek dalam katalog.
      • Pilih hak istimewa yang akan diberikan secara manual.
    3. Klik Berikan.
  15. Klik Berikutnya.

  16. Pada halaman Metadata, tentukan pasangan kunci-nilai tag. Untuk informasi selengkapnya, lihat Menerapkan tag ke objek yang dapat diamankan Katalog Unity.

  17. (Opsional) Tambahkan komentar.

  18. Klik Simpan.

SQL

Jalankan perintah berikut ini di buku catatan atau editor kueri Databricks SQL. Ganti <GoogleServiceAccountKeyJson> dengan objek JSON mentah yang menentukan proyek BigQuery dan menyediakan autentikasi. Anda dapat membuat objek JSON ini dan mengunduhnya dari halaman detail akun layanan di Google Cloud di bagian 'KEYS'. Akun layanan harus memiliki izin yang tepat yang diberikan di BigQuery, termasuk BigQuery User dan BigQuery Data Viewer. Misalnya objek JSON, lihat tab Catalog Explorer di halaman ini.

CREATE CONNECTION <connection-name> TYPE bigquery
OPTIONS (
  GoogleServiceAccountKeyJson '<GoogleServiceAccountKeyJson>'
);

Kami menyarankan agar Anda menggunakan Azure Databricks rahasia alih-alih string teks biasa untuk nilai sensitif seperti kredensial. Contohnya:

CREATE CONNECTION <connection-name> TYPE bigquery
OPTIONS (
  GoogleServiceAccountKeyJson secret ('<secret-scope>','<secret-key-user>')
)

Untuk informasi tentang menyiapkan rahasia, lihat Manajemen rahasia.

Membuat katalog asing

Catatan

Jika Anda menggunakan UI untuk membuat koneksi ke sumber data, pembuatan katalog asing disertakan dan Anda dapat melewati langkah ini.

Katalog asing mencerminkan database dalam sistem data eksternal sehingga Anda dapat mengkueri dan mengelola akses ke data dalam database tersebut menggunakan Azure Databricks dan Unity Catalog. Untuk membuat katalog asing, gunakan koneksi ke sumber data yang telah ditentukan.

Untuk membuat katalog asing, Anda bisa menggunakan Catalog Explorer atau CREATE FOREIGN CATALOG di buku catatan Azure Databricks atau editor kueri Databricks SQL. Anda juga dapat menggunakan Databricks REST API atau Databricks CLI untuk membuat katalog. Lihat perintah POST /api/2.1/unity-catalog/catalogs atau Unity Catalog.

Izin diperlukan:CREATE CATALOG izin pada metastore dan kepemilikan koneksi atau CREATE FOREIGN CATALOG hak istimewa pada koneksi.

Penjelajah Katalog

  1. Di ruang kerja Azure Databricks Anda, klik ikon Katalog Katalog untuk membuka Catalog Explorer.

  2. Di bagian atas panel Katalog , klik ikon Tambahkan atau plustambahkan ikon dan pilih Tambahkan katalog dari menu.

    Atau, dari halaman akses cepat, klik tombol Katalog, kemudian klik tombol Buat katalog.

  3. (Opsional) Masukkan properti katalog berikut:

    Id Proyek Data: Nama untuk proyek BigQuery yang berisi data yang akan dipetakan ke katalog ini. Secara default ke ID proyek penagihan yang ditetapkan di tingkat koneksi.

  4. Ikuti instruksi untuk membuat katalog asing di Membuat katalog.

SQL

Jalankan perintah SQL berikut di notebook atau editor SQL Databricks. Item dalam tanda kurung bersifat opsional. Ganti nilai placeholder.

  • <catalog-name>: Nama untuk katalog di Azure Databricks.
  • <connection-name>: Objek koneksi yang menentukan sumber data, jalur, dan kredensial akses.
CREATE FOREIGN CATALOG [IF NOT EXISTS] <catalog-name> USING CONNECTION <connection-name>;

Pushdown yang didukung

Pushdown berikut didukung:

  • Filter
  • Proyeksi
  • Batas
  • Fungsi: parsial, hanya untuk ekspresi filter. (Fungsi string, fungsi Matematika, Fungsi Data, Waktu dan Tanda Waktu, dan fungsi lain-lain, seperti Alias, Cast, SortOrder)
  • Agregat
  • Pengurutan, saat digunakan dengan limitasi
  • Penggabungan (Databricks Runtime 16.1 ke atas)

Pushdown berikut ini tidak didukung:

  • Fungsi Windows

Pemetaan jenis data

Tabel berikut ini memperlihatkan pemetaan jenis data BigQuery ke Spark.

Jenis BigQuery Jenis Spark
bignumeric, numerik DecimalType
int64 LongType
float64 DoubleType
array, geografi, interval, json, string, struct VarcharType
byte BinaryType
bool BooleanType
date DateType
tanggalwaktu, waktu, tanda waktu TimestampType/TimestampNTZType

Saat Anda membaca dari BigQuery, BigQuery Timestamp dipetakan ke Spark TimestampType jika preferTimestampNTZ = false (default). BigQuery Timestamp dipetakan ke TimestampNTZType jika preferTimestampNTZ = true.