다음을 통해 공유


외부 tables

적용 대상:예로 표시된 확인 Databricks SQL 예로 표시된 확인 Databricks Runtime

Unity Catalog 및 내장된 Azure Databricks Hive 메타스토어는 관리되는 tables기본 위치를 사용합니다. Unity Catalog는 클라우드 객체 스토리지의 데이터에 대한 grant 권한을 위한 몇 가지 새로운 보안 대상들을 도입했습니다.

외부 table

외부 스토리지 경로를 LOCATION 절을 사용하여 참조하는 외부 table는 table입니다.

스토리지 경로는 액세스 권한이 부여된 기존 외부 위치에 포함되어야 합니다.

또는 액세스 권한을 부여한 스토리지 자격 증명을 참조할 수 있습니다.

외부 tables 사용하면 외부 table대한 액세스 권한이 부여된 사용자의 스토리지 경로, 외부 위치 및 스토리지 자격 증명이 추상화됩니다.

Warning

schema(데이터베이스)가 작업 영역 수준 Hive 메타스토어에 등록된 경우 CASCADE 옵션을 사용하여 해당 schema 삭제하면 table 형식(관리형 또는 외부)에 관계없이 해당 schema 위치의 모든 파일이 재귀적으로 삭제됩니다.

schema이 Unity Catalog 메타스토어에 등록되면, Unity Catalog에서 관리하는 tables의 파일들이 재귀적으로 삭제됩니다. 그러나 의 외부 tables 파일은 삭제되지 않습니다. 클라우드 스토리지 공급자를 사용하여 해당 파일을 직접 관리해야 합니다.

따라서 실수로 인한 데이터 손실을 방지하기 위해 Hive 메타스토어의 schema 기존 데이터가 있는 위치에 등록해서는 안 됩니다. 또한 Hive 메타스토어 스키마로 관리되는 위치나 Unity Catalog이 관리하는 tables를 포함하는 위치에 새 외부 tables를 만들어서는 안 됩니다.

관계의 그래픽 표현

다음 다이어그램은 다음 간의 관계를 설명합니다.

  • 저장소 credentials
  • 외부 위치:
  • 외부 tables
  • 스토리지 경로
  • IAM 엔터티
  • Azure 서비스 계정

외부 위치 ER 다이어그램

예제

-- `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