Menjalankan kueri federasi di PostgreSQL

Halaman ini menjelaskan cara menyiapkan Lakehouse Federation untuk menjalankan kueri terfederasi pada data PostgreSQL yang tidak dikelola oleh Azure Databricks. Untuk mempelajari selengkapnya tentang Federasi Lakehouse, lihat Menyambungkan ke database dan katalog eksternal

Untuk menyambungkan ke database PostgreSQL dan menjalankan kueri menggunakan Lakehouse Federation, Anda harus membuat item berikut ini di metastore Azure Databricks Unity Catalog Anda (ruang kerja yang dibuat setelah 9 November 2023 sudah memiliki metastore Unity Catalog yang disediakan secara otomatis):

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

Sebelum Anda mulai

Persyaratan ruang kerja:

  • Ruang kerja telah diaktifkan untuk Katalog Unity. Ruang kerja yang dibuat setelah 9 November 2023 aktif untuk Katalog Unity secara otomatis, termasuk penyediaan metastore otomatis. Anda tidak perlu membuat metastore secara manual, kecuali jika ruang kerja Anda dibuat sebelum pengaktifan otomatis dan belum diaktifkan untuk Katalog Unity. Lihat Mulai menggunakan Unity Catalog.

Persyaratan komputasi:

  • Konektivitas jaringan dari sumber daya komputasi Anda ke sistem database target. Lihat Rekomendasi jaringan untuk Federasi Lakehouse.
  • Komputasi Azure Databricks harus menggunakan Databricks Runtime 13.3 LTS atau yang lebih tinggi serta mode akses Standar atau mode akses Dedicated .
  • Gudang SQL harus pro atau tanpa server dan harus menggunakan 2023.40 atau lebih tinggi.

Izin diperlukan:

  • Untuk membuat koneksi, Anda harus menjadi admin metastore atau pengguna dengan hak istimewa CREATE CONNECTION pada metastore Katalog Unity yang terhubung ke ruang kerja. Di ruang kerja yang diaktifkan untuk Katalog Unity secara otomatis, admin ruang kerja memiliki CREATE CONNECTION hak istimewa secara default.
  • 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. Di ruang kerja yang diaktifkan untuk Katalog Unity secara otomatis, admin ruang kerja memiliki CREATE CATALOG hak istimewa secara default.

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

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.

Note

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.

Eksplorer Katalog

  1. Di ruang kerja Azure Databricks Anda, klik Ikon data.Katalog.
  2. Di bagian atas panel Katalog , klik ikon Tambahkan atau plusTambahkan ikon dan pilih Buat koneksi dari menu.
  3. Pada halaman Dasar-Dasar Koneksi dari wizard Menyiapkan Koneksi, masukkan Nama Koneksi yang mudah dipahami pengguna.
  4. Pilih jenis Koneksi dari PostgreSQL.
  5. (Opsional) Tambahkan komentar.
  6. Klik Berikutnya.
  7. Pada halaman Autentikasi , masukkan properti koneksi berikut untuk instans PostgreSQL Anda.
    • Host: Misalnya, postgres-demo.lb123.us-west-2.rds.amazonaws.com
    • Port: Misalnya, 5432
    • Pengguna: Misalnya, postgres_user
    • Kata sandi: Misalnya, password123
    • userProvidedServerCertificate: Opsional. Sertifikat publik yang dikodekan PEM dari instance PostgreSQL Anda. Koneksi selalu dienkripsi dengan SSL, dan sertifikat ini memverifikasi identitas server selama handshake TLS. Sediakannya saat server Anda menampilkan sertifikat dari otoritas sertifikat pribadi atau internal yang tidak ada di penyimpanan kepercayaan default. Ini adalah alternatif dari pengaturan trustServerCertificate ke true, yang melewati verifikasi tersebut. Jika Anda sama-sama menyediakan sertifikat dan mengatur trustServerCertificate ke true, sertifikat yang diberikan akan menjadi prioritas. Verifikasi nama host dilakukan sebagai bagian dari handshake TLS (sslmode=verify-full): koneksi gagal jika nama host pada sertifikat tidak cocok dengan nama host yang diminta. Atur sslmode ke verify-ca untuk memvalidasi rantai sertifikat tanpa verifikasi nama host.
  8. Klik Buat koneksi.
  9. Pada halaman dasar-dasar Catalog, masukkan nama untuk katalog luar. 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 Izinkan:
    1. Tentukan Penanggung jawab yang dapat mengakses objek di 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 izin 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 pada Berikan.
  15. Klik Berikutnya.
  16. Pada halaman Metadata, tentukan pasangan kunci-nilai tag. Untuk informasi selengkapnya, lihat Menerapkan tag ke objek yang dapat diamankan di Katalog Unity.
  17. (Opsional) Tambahkan komentar.
  18. Kliklah Simpan.

SQL

Jalankan perintah berikut ini di buku catatan atau editor kueri Databricks SQL.

CREATE CONNECTION <connection-name> TYPE postgresql
OPTIONS (
  host '<hostname>',
  port '<port>',
  user '<user>',
  password '<password>'
);

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

CREATE CONNECTION <connection-name> TYPE postgresql
OPTIONS (
  host '<hostname>',
  port '<port>',
  user secret ('<secret-scope>','<secret-key-user>'),
  password secret ('<secret-scope>','<secret-key-password>')
)

Untuk memverifikasi identitas server selama handshake TLS (misalnya, ketika server PostgreSQL Anda menampilkan sertifikat dari otoritas sertifikat privat atau internal yang tidak ada di penyimpanan kepercayaan default), berikan sertifikat server yang dikodekan PEM dalam userProvidedServerCertificate opsi. Koneksi selalu dienkripsi dengan SSL. Opsi ini adalah alternatif untuk trustServerCertificate dan lebih diutamakan daripadanya.

CREATE CONNECTION <connection-name> TYPE postgresql
OPTIONS (
  host '<hostname>',
  port '<port>',
  user secret ('<secret-scope>','<secret-key-user>'),
  password secret ('<secret-scope>','<secret-key-password>'),
  userProvidedServerCertificate '<pem-encoded-certificate>'
)

Untuk informasi tentang menyiapkan rahasia, lihat Manajemen rahasia.

Membuat katalog asing

Note

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, Anda menggunakan koneksi ke sumber data yang telah ditentukan.

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

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

Eksplorer Katalog

  1. Di ruang kerja Azure Databricks Anda, klik Ikon data.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, lalu klik tombol Buat katalog.

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

SQL

Jalankan perintah SQL berikut ini di buku catatan atau editor kueri SQL. Item dalam tanda kurung bersifat opsional. Ganti nilai tempat penampung:

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

Fitur pushdown yang didukung

Tabel berikut mencantumkan operasi pushdown yang didukung untuk PostgreSQL, bersama dengan komputasi yang diperlukan untuk masing-masing operasi.

Pushdown Komputasi yang didukung
Fungsi Tanggal, Waktu, dan Tanda Waktu
(hanya ekspresi filter dalam bentuk parsial)
Didukung Semua komputasi
Filters Didukung Semua komputasi
Limit Didukung Semua komputasi
Fungsi Matematika
(hanya ekspresi filter dalam bentuk parsial)
Didukung Semua komputasi
Fungsi lain
(seperti Alias, Cast, SortOrder; parsial, ekspresi filter saja)
Didukung Semua komputasi
Offset Didukung Semua komputasi
Projections Didukung Semua komputasi
Fungsi String
(hanya ekspresi filter dalam bentuk parsial)
Didukung Semua komputasi
TABLESAMPLE
(tanpa penggantian)
Didukung Semua komputasi
Aggregates Didukung Semua komputasi
Operasi Aritmatika
(seperti +, -, *, %, /; tidak didukung jika ANSI dinonaktifkan)
Didukung Semua komputasi
Operator Boolean
(seperti =, <=>, <, <=, >, >=)
Didukung Semua komputasi
Operator bitwise
(&, | dan ~)
Didukung Semua komputasi
Pengurutan, ketika digunakan dengan limitasi Didukung Semua komputasi
Joins Didukung pada Databricks Runtime 17.2 dan yang lebih baru serta komputasi SQL warehouse. Pushdown ini ada di Pratinjau Umum; aktifkan tombol Gabung Pushdown untuk Kueri Federasi pada halaman Pratinjau .
Fungsi Windows Tidak didukung Tidak didukung

Pemetaan jenis data

Saat Anda membaca dari PostgreSQL ke Spark, peta jenis data sebagai berikut:

Jenis PostgreSQL Jenis Spark
numeric DecimalType
int2 ShortType
int4 (jika tidak ditandatangani) IntegerType
int8, , oidxid, int4 (jika ditandatangani) LongType
float4 FloatType
double precision, float8 DoubleType
char CharType
name, varchar, tid VarcharType
bpchar, character varying, json, jsonb, money, point, super, text StringType
bytea, geometry, varbyte BinaryType
bit, bool BooleanType
date DateType
tabstime, , timetimedengan zona waktu, timetz, time tanpa zona waktu, timestamp dengan zona waktu, timestamp, timestamptz, timestamp tanpa zona waktu* TimestampType/TimestampNTZType
Jenis array Postgresql** ArrayType

Saat Anda membaca dari PostgreSQL, PostgreSQL Timestamp dipetakan ke Spark TimestampType jika preferTimestampNTZ = false adalah nilai default. Postgresql Timestamp akan dipetakan menjadi TimestampNTZType jika preferTimestampNTZ = true.

Jenis array yang didukung adalah terbatas.

Sumber daya tambahan