외부 테이블

적용 대상:check marked yes Databricks SQL check marked yes Databricks 런타임

Unity Catalog 및 기본 제공 Azure Databricks Hive 메타스토어는 관리되는 테이블의 기본 위치를 사용합니다. Unity Catalog는 클라우드 개체 스토리지의 데이터에 권한을 부여하기 위해 몇 가지 새로운 보안 개체를 도입했습니다.

외부 테이블

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

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

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

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

Warning

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

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

따라서 실수로 인한 데이터 손실을 방지하려면 Hive 메타스토어의 스키마를 기존 데이터가 있는 위치에 등록해서는 안 됩니다. Hive 메타스토어 스키마가 관리하거나 Unity 카탈로그 관리 테이블을 포함하는 위치에 새 외부 테이블을 만들지 않아야 합니다.

관계의 그래픽 표현

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

  • 스토리지 자격 증명
  • 외부 위치:
  • 외부 테이블
  • 스토리지 경로
  • IAM 엔터티
  • Azure 서비스 계정

External location ER diagram

예제

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