Menjalankan kueri terdistribusi 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 telah diaktifkan untuk Unity Catalog.
Persyaratan komputasi:
- Konektivitas jaringan dari sumber daya komputasi Anda ke sistem database target. Lihat Rekomendasi jaringan untuk Lakehouse Federation.
- 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 yang diperlukan:
- Untuk membuat koneksi, Anda harus menjadi administrator metastore atau pengguna yang memiliki hak istimewa
CREATE CONNECTION
pada metastore Unity Catalog yang terhubung dengan ruang kerja. - Untuk membuat katalog asing, Anda harus memiliki izin
CREATE CATALOG
di metastore dan menjadi pemilik koneksi atau memiliki hak istimewaCREATE FOREIGN CATALOG
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.
- Jika Anda berencana untuk mengautentikasi menggunakan token akses OAuth, Anda juga harus meminta token akses.
(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 bawaan 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;
(Opsional) Meminta token akses OAuth
Ikuti panduan di tentang cara: Membuat dan menggunakan token OAuth dengan Snowflake OAuth untuk klien kustom di dalam Basis Pengetahuan Snowflake.
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 perintah POST /api/2.1/unity-catalog/connections dan perintah Unity Catalog.
Izin diperlukan: Admin atau pengguna Metastore dengan CREATE CONNECTION
hak istimewa.
Eksplorer Katalog
Di ruang kerja Azure Databricks Anda, klik ikon Katalog
Katalog.
Di bagian atas panel Katalog, klik ikon
atau ikon plus dan pilih Tambahkan koneksi dari menu.
Atau, dari halaman akses cepat , klik tombol Data eksternal >, buka tab Koneksi, dan klik Buat koneksi.
Pada halaman Dasar-dasar Koneksi dari wizard Menyiapkan Koneksi, masukkan nama Koneksi yang ramah pengguna.
Pilih Tipe Koneksi dari Snowflake.
Untuk jenis Autentikasi, pilih
Username and password
(autentikasi dasar),OAuth access token
,PEM Private Key
, atauOAuth
dari menu drop-down.(Opsional) Tambahkan komentar.
Klik Berikutnya.
Masukkan detail autentikasi dan koneksi berikut untuk gudang Snowflake Anda. Properti yang khusus untuk metode autentikasi yang Anda pilih didahului oleh
Auth type
dalam tanda kurung.Host: Misalnya,
snowflake-demo.east-us-2.azure.snowflakecomputing.com
Port: Misalnya,
443
Pengguna: Misalnya,
snowflake-user
(Autentikasi dasar) Kata Sandi: Misalnya,
password123
(Token akses OAuth) Token akses: Token akses dari (Opsional) Minta token akses OAuth.
(Token akses OAuth) Kedaluwarsa dalam detik: Waktu kedaluwarsa (dalam detik) untuk token akses dari (Opsional) Minta token akses OAuth (
expires_in
).(OAuth) ID Klien: Di konsol Snowflake, jalankan
SELECT SYSTEM$SHOW_OAUTH_CLIENT_SECRETS('<security-integration-name>')
untuk mengambil ID klien untuk integrasi keamanan.(OAuth) Rahasia klien: Di konsol Snowflake, jalankan
SELECT SYSTEM$SHOW_OAUTH_CLIENT_SECRETS('<security-integration-name>')
untuk mengambil rahasia klien untuk integrasi keamanan.(OAuth) cakupan OAuth :
refresh_token session:role:<role-name>
. Tentukan peran Snowflake yang akan digunakan di<role-name>
.(OAuth) Masuk dengan Snowflake: Klik dan masuk ke Snowflake menggunakan kredensial OAuth Anda.
(kunci privat PEM) kunci privat PEM: Kunci privat dari pasangan kunci RSA dalam format HEX64.
(Kunci Privat PEM) Kedaluwarsa dalam detik: Waktu kedaluwarsa (dalam detik) untuk koneksi yang dibuat dengan kunci privat.
Setelah berhasil masuk, Anda diarahkan kembali ke wizard Menyiapkan koneksi.
Klik Buat koneksi.
(Autentikasi dasar) Pada halaman detail Koneksi
, tentukan yang berikut ini: -
Snowflake Warehouse: Misalnya,
my-snowflake-warehouse
- (Opsional) host proksi: Host proksi yang digunakan untuk terhubung ke Snowflake. Anda juga harus memilih Menggunakan proksi dan menentukan port proksi.
- (Opsional) Gunakanproksi : Apakah ingin terhubung ke Snowflake menggunakan server proksi.
- (Opsional) port proksi: Port proksi yang digunakan untuk menghubungkan ke Snowflake. Anda juga harus memilih Gunakan proksi dan menentukan host proksi .
- (Opsional) Peran Snowflake: Peran keamanan default yang akan digunakan untuk sesi setelah terhubung.
-
Snowflake Warehouse: Misalnya,
Klik Berikutnya.
Pada halaman dasar-dasar katalog , 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.
(Opsional) Klik Uji koneksi untuk mengonfirmasi bahwa koneksi berfungsi.
Klik Buat katalog.
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.
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.
Berikan Hak Akses pada katalog. Klik Berikan:
- Tentukan Prinsipal yang akan memiliki akses ke objek dalam katalog. Mulai ketik prinsipal dalam kotak teks, lalu klik prinsipal dalam hasil yang dikembalikan.
- Pilih preset Hak Istimewa 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.
- Pilih Pembaca Data dari menu drop-down untuk memberikan izin
- Klik pada Berikan.
Klik Berikutnya.
Pada halaman Metadata, tentukan pasangan kunci-nilai tag. Untuk informasi selengkapnya, lihat Menerapkan tag pada objek terproteksi di Katalog Unity.
(Opsional) Tambahkan komentar.
Klik Simpan.
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 Azure Databricks rahasia 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 sandian, lihat Manajemen sandian.
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 perintah Unity Catalog.
Izin diperlukan:CREATE CATALOG
hak akses pada metastore dan kepemilikan koneksi atau hak istimewa pada koneksi.
Eksplorer Katalog
Di ruang kerja Azure Databricks Anda, klik ikon Katalog
untuk membuka Penjelajah Katalog.
Di bagian atas panel Katalog , klik ikon Tambahkan atau plus
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 placeholder ini:
-
<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
dari katalog asing dipetakan ke pengidentifikasi database Snowflake. Jika pengidentifikasi basis data Snowflake tidak sensitif terhadap huruf besar atau kecil, penggunaan huruf dalam katalog asing <database-name>
akan tetap dipertahankan. Namun, jika identitas database Snowflake peka terhadap huruf besar atau kecil, Anda harus membungkus katalog eksternal <database-name>
dalam tanda kutip ganda untuk mempertahankan bentuk 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 di-escape dengan benar.
Untuk informasi selengkapnya, lihat persyaratan Pengidentifikasi dalam dokumentasi Snowflake.
Pushdown yang didukung
Fitur pushdown berikut didukung:
- Filter
- Proyeksi
- Batasan
- Gabungan
- Agregat (Rata-rata, Korelasi, Kovarian Populasi, Kovarian Sampel, Hitung, Maksimum, Minimum, Deviasi Standar Populasi, Deviasi Standar Sampel, Jumlah, Varians Populasi, Varians Sampel)
- 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 data dari Snowflake ke Spark, jenis data dipetakan sebagai berikut:
Jenis Serpihan Salju | Jenis Spark |
---|---|
desimal, angka, numerik | TipeDesimal |
bigint, byteint, int, integer, smallint, tinyint | IntegerType |
float, float4, float8 | FloatType |
double, presisi ganda, nyata | DoubleType |
char, karakter, untai, teks, waktu, varchar | StringType |
biner | BinaryType |
Boolean | BooleanType |
tanggal | Jenis Tanggal |
tanggal waktu, timestamp, timestamp_ltz, timestamp_ntz, timestamp_tz | Jenis Penanda Waktu |
Batasan OAuth
Berikut ini adalah batasan dukungan OAuth:
- Titik akhir Snowflake OAuth harus dapat diakses dari alamat IP pusat kontrol Databricks. Lihat Traffik keluar dari bidang kendali 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 Proksi, Host Proksi, Port Proksi, dan opsi konfigurasi peran Snowflake tidak didukung. Tentukan peran Snowflake sebagai bagian dari cakupan OAuth.
Batasan kunci privat PEM
Berikut ini adalah batasan dukungan kunci privat PEM:
Driver Snowflake JDBC tidak mendukung autentikasi dengan kunci privat terenkripsi. Untuk menghindari kesalahan, buat kunci dengan opsi
-nocrypt
ditambahkan, sebagai berikut:openssl genrsa 2048 | openssl pkcs8 -topk8 -inform PEM -out rsa_key.p8 -nocrypt
Sumber Daya Tambahan:
Lihat artikel berikut dalam dokumentasi Snowflake: