Delta Live Tables 파이프라인에서 Unity 카탈로그 사용
Important
Unity 카탈로그에 대한 Delta Live Tables 지원은 공개 미리 보기로 제공됩니다.
Databricks는 Unity 카탈로그를 사용하여 Delta Live Tables 파이프라인을 구성하는 것이 좋습니다.
Unity 카탈로그로 구성된 파이프라인은 정의된 모든 구체화된 뷰 및 스트리밍 테이블을 지정된 카탈로그 및 스키마에 게시합니다. Unity 카탈로그 파이프라인은 다른 Unity 카탈로그 테이블 및 볼륨에서 읽을 수 있습니다.
Unity 카탈로그 파이프라인에서 만든 테이블에 대한 권한을 관리하려면 GRANT 및 REVOKE를 사용합니다.
요구 사항
Delta Live Tables 파이프라인에서 Unity 카탈로그에서 테이블을 만드는 데 필요한 권한:
USE CATALOG
대상 카탈로그에 대한 권한입니다.CREATE MATERIALIZED VIEW
파이프라인이 구체화된 뷰를 만드는 경우 대상 스키마에 대한 권한 및USE SCHEMA
권한CREATE TABLE
파이프라인에서 스트리밍 테이블을 만드는 경우 대상 스키마에 대한 권한과USE SCHEMA
- 파이프라인 설정에서 대상 스키마를 지정하지 않은 경우 대상 카탈로그에 하나 이상의 스키마에 대한
CREATE MATERIALIZED VIEW
또는CREATE TABLE
권한이 있어야 합니다.
Unity 카탈로그 사용 파이프라인을 실행하는 데 필요한 컴퓨팅:
- 공유 액세스 모드 클러스터. Unity 카탈로그 사용 파이프라인은 단일 사용자("할당됨") 클러스터에서 실행할 수 없습니다. Unity 카탈로그의 공유 액세스 모드 제한을 참조 하세요.
Unity 카탈로그(스트리밍 테이블 및 구체화된 뷰 포함)를 사용하여 Delta Live Tables 파이프라인에서 만든 테이블을 쿼리하는 데 필요한 컴퓨팅에는 다음이 포함됩니다.
SQL Warehosue
Databricks Runtime 13.3 LTS 이상의 공유 액세스 모드 클러스터.
단일 사용자 클러스터(즉, 클러스터가 Databricks Runtime 15.4 이상에서 실행 중이고 서버리스 컴퓨팅이 작업 영역에 대해 사용하도록 설정됨)에서 세분화된 액세스 제어를 사용하도록 설정된 경우 단일 사용자(또는 "할당됨") 액세스 모드 클러스터입니다. 자세한 내용은 단일 사용자 컴퓨팅에 대한 세분화된 액세스 제어를 참조 하세요.
테이블 소유자가 쿼리를 실행하는 경우에만 13.3 LTS에서 15.3까지의 단일 사용자(또는 "할당된" 액세스 모드 클러스터)
추가 컴퓨팅 제한 사항이 적용됩니다. 다음 섹션을 참조하세요.
제한 사항
Delta Live Tables에서 Unity 카탈로그를 사용하는 경우 다음과 같은 제한 사항이 있습니다.
기본적으로 파이프라인 소유자 및 작업 영역 관리자만 Unity 카탈로그 사용 파이프라인을 실행하는 클러스터에서 드라이버 로그를 볼 수 있습니다. 다른 사용자가 드라이버 로그에 액세스할 수 있도록 허용하려면 관리자가 아닌 사용자가 Unity 카탈로그 사용 파이프라인에서 드라이버 로그를 볼 수 있도록 허용을 참조하세요.
Hive 메타스토어를 사용하는 기존 파이프라인은 Unity 카탈로그를 사용하도록 업그레이드할 수 없습니다. Hive 메타스토어에 쓰는 기존 파이프라인을 마이그레이션하려면 새 파이프라인을 만들고 데이터 원본에서 데이터를 다시 수집해야 합니다.
Unity 카탈로그 공개 미리 보기 중에 만든 메타스토어에 연결된 작업 영역에서 Unity 카탈로그 사용 파이프라인을 만들 수 없습니다. 권한 상속으로 업그레이드를 참조하세요.
JAR은 지원되지 않습니다. 타사 Python 라이브러리만 지원됩니다. Delta Live Tables 파이프라인에 대한 Python 종속성 관리를 참조하세요.
스트리밍 테이블의 스키마를 수정하는 DML(데이터 조작 언어) 쿼리는 지원되지 않습니다.
Delta Live Tables 파이프라인에서 만든 구체화된 뷰는 다른 파이프라인 또는 다운스트림 Notebook과 같이 해당 파이프라인 외부의 스트리밍 원본으로 사용할 수 없습니다.
파이프라인이 관리 스토리지 위치가 있는 스키마에 게시하는 경우 업데이트된 스키마가 이전에 지정한 스키마와 동일한 스토리지 위치를 사용하는 경우에만 후속 업데이트에서 스키마를 변경할 수 있습니다.
테이블은 대상 스키마의 스토리지 위치에 저장됩니다. 스키마 스토리지 위치를 지정하지 않으면 테이블이 카탈로그 스토리지 위치에 저장됩니다. 스키마 및 카탈로그 스토리지 위치를 지정하지 않으면 테이블은 메타스토어의 루트 스토리지 위치에 저장됩니다.
카탈로그 탐색기 기록 탭에는 스트리밍 테이블 또는 구체화된 뷰에 대한 기록이 표시되지 않습니다.
테이블을 정의할 때는
LOCATION
속성이 지원되지 않습니다.Unity 카탈로그 사용 파이프라인은 Hive 메타스토어에 게시할 수 없습니다.
Python UDF 지원은 공개 미리 보기로 제공됩니다.
Delta Live Tables 구체화된 뷰 또는 Unity 카탈로그에 게시된 스트리밍 테이블에서는 Delta Sharing을 사용할 수 없습니다.
파이프라인 또는 쿼리에서
event_log
테이블 반환 함수를 사용하여 여러 파이프라인의 이벤트 로그에 액세스할 수 없습니다.event_log
테이블 반환 함수를 통해 만든 보기를 다른 사용자와 공유할 수 없습니다.단일 노드 클러스터는 Unity 카탈로그 사용 파이프라인에서 지원되지 않습니다. Delta Live Tables는 더 작은 파이프라인을 실행하는 단일 노드 클러스터를 만들 수 있으므로 파이프라인이
single-node mode
를 참조하는 오류 메시지와 함께 실패할 수 있습니다. 이 경우 컴퓨팅을 구성할 때 하나 이상의 작업자를 지정합니다. Delta Live Tables 파이프라인에 대한 컴퓨팅 구성을 참조하세요.
참고 항목
구체화된 뷰를 지원하는 기본 파일에는 구체화된 뷰 정의에 표시되지 않는 업스트림 테이블의 데이터(개인 식별 가능한 정보 포함)가 포함될 수 있습니다. 이 데이터는 구체화된 뷰의 증분 새로 고침을 지원하기 위해 기본 스토리지에 자동으로 추가됩니다.
구체화된 뷰의 기본 파일은 구체화된 뷰 스키마의 일부가 아닌 업스트림 테이블의 데이터를 노출할 위험이 있으므로 Databricks는 신뢰할 수 없는 다운스트림 소비자와 기본 스토리지를 공유하지 않는 것이 좋습니다.
예를 들어 구체화된 뷰 정의에 절이 포함되어 있다고 가정합니다 COUNT(DISTINCT field_a)
. 구체화된 뷰 정의에는 집계 COUNT DISTINCT
절만 포함되지만, 기초 파일에는 실제 field_a
값의 목록이 포함됩니다.
Hive 메타스토어와 Unity 카탈로그 파이프라인을 함께 사용할 수 있나요?
작업 영역에는 Unity 카탈로그 및 레거시 Hive 메타스토어를 사용하는 파이프라인이 포함될 수 있습니다. 그러나 단일 파이프라인은 Hive 메타스토어 및 Unity 카탈로그에 쓸 수 없습니다. Hive 메타스토어에 쓰는 기존 파이프라인은 Unity 카탈로그를 사용하도록 업그레이드할 수 없습니다.
Unity 카탈로그를 사용하지 않는 기존 파이프라인은 Unity 카탈로그로 구성된 새 파이프라인을 만들어 영향을 받지 않습니다. 이러한 파이프라인은 구성된 스토리지 위치를 사용하여 Hive 메타스토어에 데이터를 계속 유지합니다.
이 문서에서 달리 지정하지 않는 한 모든 기존 데이터 원본 및 Delta Live Tables 기능은 Unity 카탈로그를 사용하는 파이프라인에서 지원됩니다. Python 및 SQL 인터페이스는 모두 Unity 카탈로그를 사용하는 파이프라인에서 지원됩니다.
기존 기능의 변경 내용
데이터를 Unity 카탈로그에 유지하도록 Delta Live Tables가 구성된 경우 테이블의 수명 주기는 Delta Live Tables 파이프라인에서 관리합니다. 파이프라인이 테이블 수명 주기와 사용 권한을 관리하기 때문입니다.
- Delta Live Tables 파이프라인 정의에서 테이블을 제거하면 다음 파이프라인 업데이트에서 해당하는 구체화된 뷰 또는 스트리밍 테이블 항목이 Unity 카탈로그에서 제거됩니다. 실제 데이터는 실수로 삭제된 경우 복구할 수 있도록 기간 동안 보존됩니다. 구체화된 뷰 또는 >st를 파이프라인 정의에 다시 추가하여 데이터를 복구할 수 있습니다.
- Delta Live Tables 파이프라인을 삭제하면 해당 파이프라인에 정의된 모든 테이블이 삭제됩니다. 이러한 변경으로 인해 Delta Live Tables UI가 업데이트되어 파이프라인 삭제를 확인하라는 메시지가 표시됩니다.
- 지원하는
APPLY CHANGES INTO
데 사용되는 테이블을 비롯한 내부 지원 테이블은 사용자가 직접 액세스할 수 없습니다.
Delta Live Tables 파이프라인에서 Unity 카탈로그에 테이블 쓰기
참고 항목
파이프라인에 대한 카탈로그 및 대상 스키마를 선택하지 않으면 테이블이 Unity 카탈로그에 게시되지 않으며 동일한 파이프라인의 쿼리에서만 액세스할 수 있습니다.
Unity 카탈로그에 테이블을 쓰려면 파이프라인을 만들 때 스토리지 옵션에서 Unity 카탈로그를 선택하고 카탈로그 드롭다운 메뉴에서 카탈로그를 선택한 다음, 기존 스키마를 선택하거나 대상 스키마 드롭다운 메뉴에서 새 스키마의 이름을 입력합니다. Unity 카탈로그에 대해 알아보려면 Azure Databricks의 카탈로그란?을 참조하세요. Unity 카탈로그의 스키마에 대해 알아보려면 Azure Databricks의 스키마란?을 참조하세요.
Unity 카탈로그 파이프라인에 데이터 수집
Unity 카탈로그를 사용하도록 구성된 파이프라인은 다음에서 데이터를 읽을 수 있습니다.
- Unity 카탈로그 관리 테이블 및 외부 테이블, 보기, 구체화된 뷰 및 스트리밍 테이블.
- Hive 메타스토어 테이블 및 보기.
read_files()
함수를 사용하여 Unity 카탈로그 외부 위치에서 읽는 자동 로더.- Apache Kafka 및 Amazon Kinesis.
다음은 Unity 카탈로그 및 Hive 메타스토어 테이블에서 읽는 예제입니다.
Unity 카탈로그 테이블에서 일괄 처리 수집
SQL
CREATE OR REFRESH MATERIALIZED VIEW
table_name
AS SELECT
*
FROM
my_catalog.my_schema.table1;
Python
@dlt.table
def table_name():
return spark.table("my_catalog.my_schema.table")
Unity 카탈로그 테이블에서 변경 내용 스트리밍
SQL
CREATE OR REFRESH STREAMING TABLE
table_name
AS SELECT
*
FROM
STREAM(my_catalog.my_schema.table1);
Python
@dlt.table
def table_name():
return spark.readStream.table("my_catalog.my_schema.table")
Hive 메타스토어에서 데이터 수집
Unity 카탈로그를 사용하는 파이프라인은 hive_metastore
카탈로그를 사용하여 Hive 메타스토어 테이블에서 데이터를 읽을 수 있습니다.
SQL
CREATE OR REFRESH MATERIALIZED VIEW
table_name
AS SELECT
*
FROM
hive_metastore.some_schema.table;
Python
@dlt.table
def table3():
return spark.table("hive_metastore.some_schema.table")
자동 로더에서 데이터 수집
SQL
CREATE OR REFRESH STREAMING TABLE
table_name
AS SELECT
*
FROM
read_files(
<path-to-uc-external-location>,
"json"
)
Python
@dlt.table(table_properties={"quality": "bronze"})
def table_name():
return (
spark.readStream.format("cloudFiles")
.option("cloudFiles.format", "json")
.load(f"{path_to_uc_external_location}")
)
구체화된 뷰 공유
기본적으로 파이프라인 소유자만 파이프라인에서 만든 데이터 세트를 쿼리할 수 있는 권한이 있습니다. GRANT 문을 사용하여 다른 사용자에게 테이블을 쿼리하는 기능을 제공할 수 있으며 REVOKE 문을 사용하여 쿼리 액세스를 취소할 수 있습니다. Unity 카탈로그의 권한에 대한 자세한 내용은 Unity 카탈로그의 권한 관리를 참조하세요.
테이블에서 선택 권한 부여
GRANT SELECT ON TABLE
my_catalog.my_schema.table_name
TO
`user@databricks.com`
테이블에서 선택 철회
REVOKE SELECT ON TABLE
my_catalog.my_schema.table_name
FROM
`user@databricks.com`
테이블 만들기 또는 구체화된 뷰 권한 만들기 권한 부여
GRANT CREATE { MATERIALIZED VIEW | TABLE } ON SCHEMA
my_catalog.my_schema
TO
{ principal | user }
파이프라인에 대한 계보 보기
Delta Live Tables 파이프라인의 테이블에 대한 계보는 카탈로그 탐색기에 표시됩니다. 카탈로그 탐색기 계보 UI는 Unity 카탈로그 사용 파이프라인에서 구체화된 뷰 또는 스트리밍 테이블에 대한 업스트림 및 다운스트림 테이블을 표시합니다. Unity 카탈로그 계보에 대한 자세한 내용은 Unity카탈로그로 데이터 계보 캡처 및 보기를 참조하세요.
Unity 카탈로그 사용 Delta Live Tables 파이프라인의 구체화된 뷰 또는 스트리밍 테이블의 경우 카탈로그 탐색기 계보 UI는 현재 작업 영역에서 파이프라인에 액세스할 수 있는 경우 구체화된 뷰 또는 스트리밍 테이블을 생성한 파이프라인에도 연결됩니다.
스트리밍 테이블에서 데이터 추가, 변경 또는 삭제
삽입, 업데이트, 삭제 및 병합 문을 비롯한 DML(데이터 조작 언어) 문을 사용하여 Unity 카탈로그에 게시된 스트리밍 테이블을 수정할 수 있습니다. 스트리밍 테이블에 대한 DML 쿼리를 지원하면 GDPR(일반 데이터 보호 규정)을 준수하기 위해 테이블 업데이트와 같은 사용 사례를 사용할 수 있습니다.
참고 항목
- 스트리밍 테이블의 테이블 스키마를 수정하는 DML 문은 지원되지 않습니다. DML 문이 테이블 스키마의 진화를 시도하지 않는지 확인합니다.
- 스트리밍 테이블을 업데이트하는 DML 문은 Databricks Runtime 13.3 LTS 이상을 사용하여 공유 Unity 카탈로그 클러스터 또는 SQL 웨어하우스에서만 실행할 수 있습니다.
- 스트리밍에는 추가 전용 데이터 원본이 필요하기 때문에 처리 시 변경 내용이 있는 원본 스트리밍 테이블에서 스트리밍이 필요한 경우(예: DML 문) 원본 스트리밍 테이블을 읽을 때 skipChangeCommits 플래그를 설정합니다.
skipChangeCommits
가 설정되면 원본 테이블에서 레코드를 삭제하거나 수정하는 트랜잭션은 무시됩니다. 처리에 스트리밍 테이블이 필요하지 않은 경우 구체화된 뷰(추가 전용 제한이 없음)를 대상 테이블로 사용할 수 있습니다.
다음은 스트리밍 테이블의 레코드를 수정하는 DML 문의 예입니다.
특정 ID를 사용하여 레코드 삭제:
DELETE FROM my_streaming_table WHERE id = 123;
특정 ID를 사용하여 레코드 업데이트:
UPDATE my_streaming_table SET name = 'Jane Doe' WHERE id = 123;
행 필터 및 열 마스크가 있는 테이블 게시
Important
이 기능은 공개 미리 보기 상태입니다.
행 필터를 사용하면 테이블 검색이 행을 가져올 때마다 필터로 적용되는 함수를 지정할 수 있습니다. 이러한 필터를 통해 후속 쿼리는 필터 조건자가 true로 평가되는 행만 반환합니다.
열 마스크를 사용하면 테이블 검색이 행을 가져올 때마다 열 값을 마스킹할 수 있습니다. 해당 열에 대한 이후 쿼리는 열의 원래 값 대신 평가된 함수의 결과를 반환합니다. 행 필터 및 열 마스크 사용에 대한 자세한 내용은 행 필터 및 열 마스크를 사용하여 중요한 테이블 데이터 필터링을 참조 하세요.
행 필터 및 열 마스크 관리
구체화된 뷰 및 스트리밍 테이블의 행 필터와 열 마스크는 CREATE OR REFRESH
문을 통해 추가, 업데이트 또는 삭제해야 합니다.
행 필터 및 열 마스크 를 사용하여 테이블을 정의하는 방법에 대한 자세한 구문은 Delta Live Tables SQL 언어 참조 및 Delta Live Tables Python 언어 참조를 참조하세요.
동작
다음은 Delta Live Tables 파이프라인에서 행 필터 또는 열 마스크를 사용할 때 중요한 세부 정보입니다.
- 소유자로 새로 고침: 파이프라인 업데이트가 구체화된 뷰 또는 스트리밍 테이블을 새로 고치면 행 필터 및 열 마스크 함수가 파이프라인 소유자의 권한으로 실행됩니다. 즉, 테이블 새로 고침은 파이프라인을 만든 사용자의 보안 컨텍스트를 사용합니다. 사용자 컨텍스트(예:
CURRENT_USER
및IS_MEMBER
)를 확인하는 함수는 파이프라인 소유자의 사용자 컨텍스트를 사용하여 평가됩니다. - 쿼리: 구체화된 뷰 또는 스트리밍 테이블을 쿼리할 때 사용자 컨텍스트(예:
CURRENT_USER
및IS_MEMBER
)를 확인하는 함수는 호출자의 사용자 컨텍스트를 사용하여 평가됩니다. 이 방법은 현재 사용자의 컨텍스트에 따라 사용자별 데이터 보안 및 액세스 제어를 적용합니다. - 행 필터 및 열 마스크가 포함된 원본 테이블에 대해 구체화된 뷰를 만들 때 구체화된 뷰의 새로 고침은 항상 전체 새로 고침입니다. 전체 새로 고침은 원본에서 사용 가능한 모든 데이터를 최신 정의로 다시 처리합니다. 이 프로세스는 원본 테이블의 보안 정책이 최신 데이터 및 정의와 함께 평가되고 적용되는지 확인합니다.
가시성
또는 INFORMATION_SCHEMA
카탈로그 탐색기를 사용하여 DESCRIBE EXTENDED
지정된 구체화된 뷰 또는 스트리밍 테이블에 적용되는 기존 행 필터 및 열 마스크를 검사합니다. 이 기능을 사용하면 사용자가 구체화된 뷰 및 스트리밍 테이블에 대한 데이터 액세스 및 보호 조치를 감사하고 검토할 수 있습니다.