Tabel eksternal

Berlaku untuk:check marked yes Databricks SQL check marked yes Databricks Runtime

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.

Tabel eksternal

Tabel eksternal adalah tabel yang mereferensikan jalur penyimpanan eksternal dengan menggunakan klausul LOCATION.

Jalur penyimpanan harus berada dalam lokasi eksternal yang ada tempat Anda telah diberikan akses.

Atau, Anda dapat mereferensikan info masuk penyimpanan yang telah Anda berikan aksesnya.

Menggunakan tabel eksternal mengabstraksi jalur penyimpanan, lokasi eksternal, dan kredensial penyimpanan untuk pengguna yang diberikan akses ke tabel eksternal.

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

External location ER diagram

Contoh

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

-- Create or replace an external table from a query
> CREATE OR REPLACE TABLE sec_filings
  LOCATION 'abfss://container@storageaccount.dfs.core.windows.net/depts/finance/sec_filings'
  AS (SELECT * FROM current_filings);

-- Cannot list files under an external table without permissions 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

-- Grant access to sec_filings to all employees
> GRANT SELECT ON TABLE sec_filings TO employee;

-- Any member of the `employee` group can securely read sec_filings
> SELECT count(1) FROM sec_filings;
 20

-- Any member of the `employee` group can list files under the sec_filings table
> LIST `abfss://container@storageaccount.dfs.core.windows.net/depts/finance/sec_filings`
  _delta_log
> LIST `abfss://container@storageaccount.dfs.core.windows.net/depts/finance/sec_filings/_delta_log`
  00000.json