Bagikan melalui


Menjalankan kueri federasi di Amazon Redshift

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

Untuk terhubung dan menjalankan kueri di database Amazon Redshift menggunakan Lakehouse Federation, Anda harus membuat elemen berikut di metastore Azure Databricks Unity Catalog Anda:

  • Koneksi ke Kueri Eksekusi Anda di database Amazon Redshift.
  • Katalog asing yang mencerminkan kueri yang dijalankan di database Amazon Redshift dalam Katalog Unity sehingga Anda dapat menggunakan sintaksis kueri dan alat tata kelola data Katalog Unity untuk mengelola akses pengguna Azure Databricks terhadap database.

Sebelum Anda mulai

Persyaratan ruang kerja:

  • Ruang kerja telah diaktifkan untuk 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 lebih tinggi dan mode akses Bersama atau pengguna tunggal .
  • Gudang SQL harus pro atau tanpa server dan harus menggunakan 2023.40 atau lebih tinggi.

Izin yang diperlukan:

  • Untuk membuat koneksi, Anda harus menjadi admin metastore atau pengguna dengan privilege CREATE CONNECTION pada metastore Katalog Unity yang terhubung ke workspace.
  • 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 klik Buat koneksi.

  3. Pada halaman Rincian Koneksi dari wizard Menyiapkan koneksi, masukkan nama Koneksi yang mudah diingat dan digunakan.

  4. Pilih jenis Koneksi Redshift.

  5. (Opsional) Tambahkan komentar.

  6. Klik Berikutnya.

  7. Pada halaman Autentikasi , masukkan properti koneksi berikut untuk instans Redshift Anda.

    • Host: Misalnya, redshift-demo.us-west-2.redshift.amazonaws.com
    • Port: Misalnya, 5439
    • Pengguna: Misalnya, redshift_user
    • Kata sandi: Misalnya, password123
  8. (Opsional) Nonaktifkan verifikasi nama host SSL.

  9. Klik Buat koneksi.

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

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

  12. Klik Buat katalog.

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

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

  15. Berikan Hak Istimewa pada katalog. Klik Pemberian:

    1. Tentukan Pihak 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 istimewa 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.
  16. Klik Berikutnya.

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

  18. (Opsional) Tambahkan komentar.

  19. Klik Simpan.

SQL

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

CREATE CONNECTION <connection-name> TYPE redshift
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 redshift
OPTIONS (
  host '<hostname>',
  port '<port>',
  user secret ('<secret-scope>','<secret-key-user>'),
  password secret ('<secret-scope>','<secret-key-password>')
)

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, 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 perintah POST /api/2.1/unity-catalog/catalogs dan 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 untuk membuka Catalog Explorer.

  2. Di bagian atas panel Katalog, klik ikon Tambahkan atau plusikon Tambah 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 placeholder.

  • <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>');

Pushdown yang didukung

Pushdown berikut didukung:

  • Filter
  • Proyeksi
  • Batas
  • Gabungan
  • Agregat (Rata-rata, Hitungan, Maks, Min, StddevPop, StddevSamp, Sum, VarianceSamp)
  • Fungsi (Fungsi string dan fungsi lain-lain, seperti Alias, Cast, SortOrder)
  • Pengurutan

Pushdown berikut ini tidak didukung:

  • Fungsi Windows

Pemetaan jenis data

Saat Anda membaca dari Redshift ke Spark, jenis data memetakan sebagai berikut:

Jenis Redshift Jenis Spark
numeric DecimalType
int2, int4 IntegerType
int8, oid, xid LongType
float4 FloatType
presisi ganda, float8, uang DoubleType
bpchar, karakter, karakter bervariasi, nama, super, teks, tid, varchar StringType
bytea, geometri, varbyte BinaryType
bit, bool BooleanType
date DateType
tabstime, time, time with time zone, timetz, time without time zone, timestamp with time zone, timestamptz, timestamptz without time zone* TimestampType/TimestampNTZType

*Saat Anda membaca dari Redshift, Redshift Timestamp dipetakan ke Spark TimestampType jika infer_timestamp_ntz_type = false (default). Redshift Timestamp dipetakan ke TimestampNTZType jika infer_timestamp_ntz_type = true.