Lokasi eksternal

Berlaku untuk:centang ditandai ya Databricks SQL centang ditandai ya Databricks Runtime centang ditandai ya Unity Catalog saja

Unity Catalog dan metastore Azure Databricks Hive bawaan menggunakan lokasi default untuk tabel terkelola. Unity Catalog memperkenalkan beberapa objek baru yang dapat diamankan untuk memberikan hak istimewa ke data dalam penyimpanan objek cloud.

Lokasi eksternal

Lokasi eksternal adalah objek yang dapat diamankan yang menggabungkan jalur penyimpanan dengan info masuk penyimpanan yang mengotorisasi akses ke jalur tersebut.

Pembuat lokasi eksternal adalah pemilik awalnya. Pemilik lokasi eksternal dapat memodifikasi nama lokasi eksternal, URI, dan kredensial penyimpanan.

Setelah lokasi eksternal dibuat, Anda dapat memberikan akses ke sana ke prinsipal tingkat akun (pengguna dan grup).

Pengguna atau grup yang mempunyai izin untuk menggunakan lokasi eksternal dapat mengakses jalur penyimpanan apa pun di dalam jalur lokasi tanpa akses langsung ke info masuk penyimpanan.

Untuk lebih menyempurnakan kontrol akses, Anda dapat menggunakan GRANT pada tabel eksternal guna merangkum akses ke file individual dalam lokasi eksternal.

Nama lokasi eksternal tidak memenuhi syarat dan harus unik di dalam metastore.

Jalur penyimpanan lokasi eksternal apa pun tidak dapat dimuat dalam jalur penyimpanan lokasi eksternal lain, atau dalam jalur penyimpanan tabel eksternal menggunakan kredensial penyimpanan eksplisit.

Peringatan

Jika skema (database) terdaftar di metastore Apache Hive tingkat ruang kerja Anda, menghilangkan skema tersebut CASCADE menggunakan opsi menyebabkan semua file di lokasi skema tersebut dihapus secara rekursif, terlepas dari jenis tabel (terkelola atau eksternal).

Jika skema didaftarkan ke metastore Unity Catalog, file untuk tabel terkelola Unity Catalog akan dihapus secara rekursif. Namun, file untuk tabel eksternal tidak dihapus. Anda harus mengelola file tersebut menggunakan penyedia penyimpanan cloud secara langsung.

Oleh karena itu, untuk menghindari kehilangan data yang tidak disengaja, Anda tidak boleh mendaftarkan skema di metastore Apache Hive ke lokasi dengan data yang ada. Anda juga tidak boleh membuat tabel eksternal baru di lokasi yang dikelola oleh skema metastore Apache Hive atau berisi tabel terkelola Katalog Unity.

Representasi Grafis hubungan

Diagram berikut menjelaskan hubungan antara:

  • info masuk penyimpanan
  • lokasi eksternal
  • tabel eksternal
  • jalur penyimpanan
  • Entitas IAM
  • Akun layanan Azure

Diagram ER lokasi eksternal

Contoh

-- Grant `finance` user permission to create external location on `my_azure_storage_cred` storage credential, and then create an external location on the specific path to which `my_azure_storage_cred` has access
> GRANT CREATE EXTERNAL LOCATION ON STORAGE CREDENTIAL `my_azure_storage_cred` TO `finance`
> CREATE EXTERNAL LOCATION `finance_loc` URL 'abfss://container@storageaccount.dfs.core.windows.net/depts/finance'
    WITH (CREDENTIAL `my_azure_storage_cred`)
    COMMENT 'finance';

-- Grant read, write, and create table access to the finance location to `finance` user
> GRANT READ FILES, WRITE FILES, CREATE EXTERNAL TABLE ON EXTERNAL LOCATION `finance_loc` TO `finance`;

-- `finance` can read from any storage path under abfss://depts/finance but nowhere else
> SELECT count(1) FROM `delta`.`abfss://container@storageaccount.dfs.core.windows.net/depts/finance` WITH (CREDENTIAL my_azure_storage_cred);
  100
> SELECT count(1) FROM `delta`.`abfss://container@storageaccount.dfs.core.windows.net/depts/hr/employees` WITH (CREDENTIAL my_azure_storage_cred);
  Error

-- `finance` can create an external table over specific object within the `finance_loc` location
> CREATE TABLE main.default.sec_filings LOCATION 'abfss://container@storageaccount.dfs.core.windows.net/depts/finance/sec_filings';

-- Cannot list files under an external table with a user that doesn't have SELECT permission on it
> LIST 'abfss://container@storageaccount.dfs.core.windows.net/depts/finance/sec_filings'
  Error
> LIST 'abfss://container@storageaccount.dfs.core.windows.net/depts/finance/sec_filings/_delta_log'
  Error