Menjalankan kueri federasi di Snowflake
Artikel ini menjelaskan cara menyiapkan Federasi Lakehouse untuk menjalankan kueri federasi pada data Snowflake yang tidak dikelola oleh Azure Databricks. Untuk mempelajari selengkapnya tentang Federasi Lakehouse, lihat Apa itu Federasi Lakehouse?.
Untuk menyambungkan ke database Snowflake Anda menggunakan Federasi Lakehouse, Anda harus membuat yang berikut ini di metastore Azure Databricks Unity Catalog Anda:
- Koneksi ke database Snowflake Anda.
- Katalog asing yang mencerminkan database Snowflake Anda di Unity Catalog sehingga Anda dapat menggunakan sintaks kueri Unity Catalog 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 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
CREATE CONNECTION
hak istimewa pada metastore Katalog Unity yang dilampirkan ke ruang kerja. - Untuk membuat katalog asing, Anda harus memiliki
CREATE CATALOG
izin di metastore dan menjadi pemilik koneksi atau memilikiCREATE FOREIGN CATALOG
hak istimewa pada koneksi.
Persyaratan izin tambahan ditentukan di setiap bagian berbasis tugas yang mengikuti.
- Jika Anda berencana untuk mengautentikasi menggunakan OAuth, buat integrasi keamanan di konsol Snowflake. Lihat bagian berikut untuk detailnya.
(Opsional) Membuat integrasi keamanan di konsol Snowflake
Jika Anda ingin mengautentikasi menggunakan OAuth, ikuti langkah ini sebelum Anda membuat koneksi Snowflake. Untuk mengautentikasi menggunakan nama pengguna dan kata sandi, lewati bagian ini.
Catatan
Hanya integrasi OAuth asli Snowflake yang didukung. Integrasi OAuth eksternal seperti Okta atau MICROSOFT Entra ID tidak didukung.
Di konsol Snowflake, jalankan CREATE SECURITY INTEGRATION
. Ganti nilai berikut:
<integration-name>
: Nama unik untuk integrasi OAuth Anda.<workspace-url>
: URL ruang kerja Azure Databricks. Anda harus mengaturOAUTH_REDIRECT_URI
kehttps://<workspace-url>/login/oauth/snowflake.html
, di mana<workspace-url>
adalah URL unik ruang kerja Azure Databricks tempat Anda akan membuat koneksi Snowflake.<duration-in-seconds>
: Panjang waktu untuk token refresh.Penting
OAUTH_REFRESH_TOKEN_VALIDITY
adalah bidang kustom yang diatur ke 90 hari secara default. Setelah token refresh kedaluwarsa, Anda harus mengautentikasi ulang koneksi. Atur bidang ke panjang waktu yang wajar.
CREATE SECURITY INTEGRATION <integration-name>
TYPE = oauth
ENABLED = true
OAUTH_CLIENT = custom
OAUTH_CLIENT_TYPE = 'CONFIDENTIAL'
OAUTH_REDIRECT_URI = 'https://<workspace-url>/login/oauth/snowflake.html'
OAUTH_ISSUE_REFRESH_TOKENS = TRUE
OAUTH_REFRESH_TOKEN_VALIDITY = <duration-in-seconds>
OAUTH_ENFORCE_PKCE = TRUE;
Buat sambungan
Koneksi menentukan jalur dan kredensial untuk mengakses sistem database eksternal. Untuk membuat koneksi, Anda bisa menggunakan Catalog Explorer atau CREATE CONNECTION
perintah SQL di buku catatan Azure Databricks atau editor kueri Databricks SQL.
Izin diperlukan: Admin atau pengguna Metastore dengan CREATE CONNECTION
hak istimewa.
Penjelajah Katalog
Di ruang kerja Azure Databricks Anda, klik Katalog.
Di bagian atas panel Katalog, klik ikon Tambahkan dan pilih Tambahkan koneksi dari menu.
Atau, dari halaman Akses cepat, klik tombol Data > eksternal, buka tab Koneksi, dan klik Buat koneksi.
Masukkan nama Koneksi yang mudah digunakan.
Pilih Jenis koneksi Snowflake.
Masukkan properti koneksi berikut untuk gudang Snowflake Anda.
- Jenis autentikasi:
OAuth
atauUsername and password
- Host: Misalnya,
snowflake-demo.east-us-2.azure.snowflakecomputing.com
- Port: Misalnya,
443
- Gudang Snowflake: Misalnya,
my-snowflake-warehouse
- Pengguna: Misalnya,
snowflake-user
- (OAuth) ID Klien: Di konsol Snowflake, jalankan
SELECT SYSTEM$SHOW_OAUTH_CLIENT_SECRETS('<security_integration_name>')
untuk mengambil ID klien untuk integrasi keamanan Anda. - (OAuth): Rahasia klien: Di konsol Snowflake, jalankan
SELECT SYSTEM$SHOW_OAUTH_CLIENT_SECRETS('<security_integration_name>')
untuk mengambil rahasia klien untuk integrasi keamanan Anda. - (OAuth) Cakupan klien:
refresh_token session:role:<role-name>
. Tentukan peran Snowflake yang akan digunakan di<role-name>
. - (Nama pengguna dan kata sandi) Kata sandi: Misalnya,
password123
(OAuth) Anda diminta untuk masuk ke Snowflake menggunakan kredensial OAuth Anda.
- Jenis autentikasi:
(Opsional) Klik Uji koneksi untuk mengonfirmasi bahwa koneksi berfungsi.
(Opsional) Tambahkan komentar.
Klik Buat.
SQL
Jalankan perintah berikut ini di buku catatan atau editor kueri Databricks SQL.
CREATE CONNECTION <connection-name> TYPE snowflake
OPTIONS (
host '<hostname>',
port '<port>',
sfWarehouse '<warehouse-name>',
user '<user>',
password '<password>'
);
Kami menyarankan agar Anda menggunakan rahasia Azure Databricks alih-alih string teks biasa untuk nilai sensitif seperti kredensial. Contohnya:
CREATE CONNECTION <connection-name> TYPE snowflake
OPTIONS (
host '<hostname>',
port '<port>',
sfWarehouse '<warehouse-name>',
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
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 CREATE FOREIGN CATALOG
perintah SQL di buku catatan Azure Databricks atau editor kueri SQL.
Izin diperlukan: CREATE CATALOG
izin pada metastore dan kepemilikan koneksi atau CREATE FOREIGN CATALOG
hak istimewa pada koneksi.
Penjelajah Katalog
Di ruang kerja Azure Databricks Anda, klik Katalog untuk membuka Catalog Explorer.
Di bagian atas panel Katalog, klik ikon Tambahkan dan pilih Tambahkan katalog dari menu.
Atau, dari halaman Akses cepat, klik tombol Katalog , lalu klik tombol Buat katalog .
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>');
Pengidentifikasi database peka huruf besar/kecil
Bidang database
peta katalog asing ke pengidentifikasi database Snowflake. Jika pengidentifikasi database Snowflake tidak peka huruf besar/kecil, casing yang Anda gunakan di katalog <database-name>
asing dipertahankan. Namun, jika pengidentifikasi database Snowflake peka huruf besar/kecil, Anda harus membungkus katalog <database-name>
asing dalam tanda kutip ganda untuk mempertahankan kasus tersebut.
Contohnya:
database
dikonversi keDATABASE
"database"
dikonversi kedatabase
"database"""
dikonversi kedatabase"
Untuk lolos dari kutipan ganda, gunakan tanda kutip ganda lainnya.
"database""
menghasilkan kesalahan karena tanda kutip ganda tidak lolos dengan benar.
Untuk informasi selengkapnya, lihat Persyaratan pengidentifikasi dalam dokumentasi Snowflake.
Pushdown yang didukung
Pushdown berikut didukung:
- Filter
- Proyeksi
- Batas
- Gabungan
- Agregat (Rata-rata, Corr, CovPopulation, CovSample, Count, Max, Min, StddevPop, StddevSamp, Sum, VariancePop, VarianceSamp)
- Fungsi (Fungsi string, fungsi Matematika, fungsi Data, Waktu dan Tanda Waktu, dan fungsi lain-lain, seperti Alias, Cast, SortOrder)
- Fungsi Windows (DenseRank, Rank, RowNumber)
- Pengurutan
Pemetaan jenis data
Saat Anda membaca dari Snowflake ke Spark, jenis data memetakan sebagai berikut:
Jenis Snowflake | Jenis Spark |
---|---|
desimal, angka, numerik | DecimalType |
bigint, byteint, int, integer, smallint, tinyint | IntegerType |
float, float4, float8 | FloatType |
double, presisi ganda, nyata | DoubleType |
karakter, karakter, string, teks, waktu, varchar | StringType |
biner | BinaryType |
Boolean | BooleanType |
date | DateType |
tanggalwaktu, tanda waktu, timestamp_ltz, timestamp_ntz, timestamp_tz | TimestampType |
Batasan OAuth
Berikut ini adalah batasan dukungan OAuth:
- Titik akhir Snowflake OAuth harus dapat diakses dari IP sarana kontrol Databricks. Lihat Keluar dari sarana kontrol Azure Databricks. Snowflake mendukung konfigurasi kebijakan jaringan pada tingkat integrasi keamanan, yang memungkinkan kebijakan jaringan terpisah yang memungkinkan konektivitas langsung dari sarana kontrol Databricks ke titik akhir OAuth untuk otorisasi.
- Gunakan opsi konfigurasi peran Proksi, host Proksi, port Proksi, dan Snowflake tidak didukung. Tentukan peran Snowflake sebagai bagian dari cakupan OAuth.
Sumber Daya Tambahan:
- Mengonfigurasi Snowflake OAuth untuk klien kustom dalam dokumentasi Snowflake
- Referensi SQL: BUAT INTEGRASI KEAMANAN (Snowflake OAuth) dalam dokumentasi Snowflake