외부 테이블로 작업하기
외부 테이블은 클라우드 테넌트의 클라우드 개체 스토리지에 있는 디렉터리에 데이터를 저장합니다. 외부 테이블 정의 시 저장 위치를 지정해야 합니다.
Databricks는 Azure Databricks의 컴퓨팅을 사용하지 않고 데이터에 직접 액세스해야 할 때만 외부 테이블 사용을 권장합니다. Unity Catalog 권한은 사용자가 외부 시스템에서 데이터 파일에 접근할 때는 적용되지 않습니다.
참고 항목
이 문서에서는 Unity 카탈로그 외부 테이블에 초점을 맞춥니다. 레거시 Hive 메타스토어의 외부 테이블은 다른 동작을 합니다. 레거시 Hive 메타스토어의 데이터베이스 개체를 참조하세요.
외부 테이블로 작업하기
Azure Databricks는 외부 테이블에 대한 메타데이터만 관리하며, 포함된 스키마와 연결된 관리형 스토리지 위치는 사용하지 않습니다. Unity Catalog에서의 테이블 등록은 단순히 데이터 파일에 대한 포인터입니다. 외부 테이블을 끌어다 놓아도 데이터 파일은 삭제되지 않습니다.
외부 테이블 생성 시, 기존 데이터 파일 디렉토리를 테이블로 등록하거나 새로운 데이터 파일을 생성할 경로를 제공할 수 있습니다.
외부 테이블은 다음 파일 형식을 사용할 수 있습니다.
- DELTA
- CSV
- JSON
- AVRO
- PARQUET
- ORC
- TEXT
외부 테이블 만들기
외부 테이블을 생성하려면 SQL 명령 또는 Dataframe 쓰기 작업을 사용할 수 있습니다.
시작하기 전에
외부 테이블을 생성하려면 다음 권한 요구 사항을 충족해야 합니다.
- 외부 테이블이 액세스하는
CREATE EXTERNAL TABLE
에 대한 액세스 권한을 부여하는 외부 위치에 대한LOCATION
권한입니다. - 테이블의 부모 스키마에 대한
USE SCHEMA
권한. - 테이블의 부모 카탈로그에 대한
USE CATALOG
권한. - 테이블의 부모 스키마에 대한
CREATE TABLE
권한.
외부 위치 구성에 대한 자세한 내용은 클라우드 스토리지를 Azure Databricks에 연결하기 위한 외부 위치 생성을 참조하십시오.
SQL 명령 예제
Notebook 또는 SQL 쿼리 편집기에서 다음 명령 예제 중 하나를 사용하여 외부 테이블을 생성합니다.
다음 예에서 자리 표시자 값을 바꿉니다.
-
<catalog>
: 테이블을 포함할 카탈로그의 이름입니다. -
<schema>
: 테이블을 포함할 스키마의 이름입니다. -
<table-name>
: 테이블의 이름입니다. -
<column-specification>
: 각 열의 이름 및 데이터 형식입니다. -
<bucket-path>
: 테이블이 생성될 클라우드 저장소 버킷의 경로입니다. -
<table-directory>
: 테이블이 만들어질 디렉터리입니다. 각 테이블에 대해 고유한 디렉터리를 사용합니다.
CREATE TABLE <catalog>.<schema>.<table-name>
(
<column-specification>
)
LOCATION 'abfss://<bucket-path>/<table-directory>';
테이블 생성 매개변수에 대한 자세한 내용은 CREATE TABLE를 참조하세요.
DataFrame 쓰기 작업
많은 사용자가 쿼리 결과 또는 DataFrame 쓰기 작업을 통해 외부 테이블을 생성합니다. 다음 문서는 Azure Databricks에서 외부 테이블을 생성할 때 사용할 수 있는 다양한 패턴 중 일부를 설명합니다.
외부 테이블 삭제
테이블을 삭제하려면 해당 소유자이거나 테이블에 대한 MANAGE
권한이 있어야 합니다. 외부 테이블을 삭제하려면 다음 SQL 명령을 실행합니다.
DROP TABLE IF EXISTS catalog_name.schema_name.table_name;
외부 테이블을 삭제할 때 Unity 카탈로그는 클라우드 스토리지의 기본 데이터를 삭제하지 않습니다. 테이블과 연관된 데이터를 삭제하려면 기본 데이터 파일을 직접 삭제해야 합니다.
Notebook 예제: 외부 테이블 생성
다음 예제 Notebook을 사용하여 카탈로그, 스키마 및 외부 테이블을 만들고 이에 대한 권한을 관리할 수 있습니다.