Delta Live Tables 파이프라인에서 Unity Catalog 사용
Important
Unity Catalog 대한 Delta Live Tables 지원은 공개 미리 보기있습니다.
Databricks는 Delta Live Tables 파이프라인을 Unity Catalog을 사용하여 구성할 것을 권장합니다.
Unity로 구성된 파이프라인은 정의된 모든 구체화된 views 및 스트리밍 tables 지정된 catalog 및 schema게시할 Catalog 있습니다. Unity Catalog 파이프라인은 다른 Unity Catalogtables 및 volumes에서 읽을 수 있습니다.
Unity Catalog 파이프라인에서 만든 tables에 대한 권한을 관리하려면 GRANT과 REVOKE를 사용하십시오.
요구 사항
Unity Catalog의 Delta Live Tables 파이프라인에서 tables을(를) 생성하는 데 필요한 권한:
- 대상 catalog에 대한
USE CATALOG
권한. - 파이프라인이 구체화된
을 만드는 경우 대상 에 대한 및 권한을 제공합니다. - 파이프라인이 스트리밍 tables를 생성하는 경우, 대상 schema에 대해
CREATE TABLE
및USE SCHEMA
권한이 필요합니다. - 파이프라인 설정에 대상 schema이 지정되지 않은 경우 대상 catalog에 있는 하나 이상의 schema에 대해
CREATE MATERIALIZED VIEW
또는CREATE TABLE
권한이 있어야 합니다.
Unity Catalog-enabled 파이프라인을 실행하는 데 필요한 컴퓨팅 파워:
- 공유 액세스 모드 클러스터. Unity Catalog사용 파이프라인은 단일 사용자("할당됨") 클러스터에서 실행할 수 없습니다. Unity 공유 액세스 모드 제한 사항을 Catalog에서 참조하세요.
Unity Catalog 사용하여 Delta Live Tables 파이프라인에서 만든 tables 쿼리하는 데 필요한 컴퓨팅(스트리밍 tables 및 구체화된 views포함)에는 다음이 포함됩니다.
SQL Warehosue
Databricks Runtime 13.3 LTS 이상의 공유 액세스 모드 클러스터.
단일 사용자 클러스터(즉, 클러스터가 Databricks Runtime 15.4 이상에서 실행 중이고 서버리스 컴퓨팅이 작업 영역에 대해 사용하도록 설정됨)에서 세분화된 액세스 제어를 사용하도록 설정된 경우 단일 사용자(또는 "할당됨") 액세스 모드 클러스터입니다. 자세한 내용은 단일 사용자 컴퓨팅에 대한 세분화된 액세스 제어를 참조 하세요.
단일 사용자(또는 "할당된") 액세스 모드 클러스터는 table 소유자가 쿼리를 실행하는 경우에만 13.3 LTS부터 15.3 버전까지에서 가능합니다.
추가 컴퓨팅 제한 사항이 적용됩니다. 다음 섹션을 참조하세요.
제한 사항
Delta Live Tables와 Unity Catalog를 함께 사용할 때의 제한 사항은 다음과 같습니다.
기본적으로 파이프라인 소유자 및 작업 영역 관리자만 Unity Catalog사용 가능한 파이프라인을 실행하는 클러스터에서 드라이버 로그를 볼 수 있습니다. 다른 사용자가 드라이버 로그에 액세스할 수 있도록 허용하려면 관리자가 아닌 사용자가 Unity Catalog사용 파이프라인드라이버 로그를 볼 수 있도록 허용을 참조하세요.
Hive 메타스토어를 사용하는 기존 파이프라인은 Unity Catalog사용하도록 업그레이드할 수 없습니다. Hive 메타스토어에 쓰는 기존 파이프라인을 마이그레이션하려면 새 파이프라인을 만들고 데이터 원본에서 데이터를 다시 수집해야 합니다.
Unity Catalog 공개 미리 보기 중에 만든 메타스토어에 연결된 작업 영역에서 Unity Catalog사용 가능한 파이프라인을 만들 수 없습니다. 권한 상속으로 업그레이드를 참조하세요.
JAR은 지원되지 않습니다. 타사 Python 라이브러리만 지원됩니다. Delta Live Tables 파이프라인에 대한 Python 종속성을 관리하는 법을참조하세요.
DML(데이터 조작 언어) 쿼리는 스트리밍 table의 schema를 수정하는 것이 지원되지 않습니다.
Delta Live Tables 파이프라인에서 생성된 구체화된 뷰는 해당 파이프라인 외부에서 스트리밍 소스로 사용할 수 없습니다. 예를 들어, 다른 파이프라인이나 다운스트림 노트북에서 사용할 수 없습니다.
파이프라인이 관리되는 스토리지 위치가 있는 schema에 게시하는 경우, 후속 update에서 schema을 변경할 수 있습니다. 다만, 업데이트된 schema가 이전에 지정한 schema와 동일한 스토리지 위치를 사용할 때만 가능합니다.
Tables는 대상 schema의 저장소 위치에 저장됩니다. schema 스토리지 위치를 지정하지 않으면 tablescatalog 스토리지 위치에 저장됩니다. schema 및 catalog 스토리지 위치를 지정하지 않으면 tables 메타스토어의 루트 스토리지 위치에 저장됩니다.
Catalog 탐색기 기록 탭에는 구체화된 views대한 기록이 표시되지 않습니다.
table정의할 때는
LOCATION
속성이 지원되지 않습니다.Unity Catalog-활성화된 파이프라인은 Hive 메타스토어에 게시할 수 없습니다.
Python UDF 지원은 공개 미리 보기로 제공됩니다.
Delta Live Tables 구체화된 보기 또는 스트리밍 table가 Unity Catalog에 게시된 경우 Delta Sharing을 사용할 수 없습니다.
파이프라인 또는 쿼리에서
event_log
table 값 함수 사용하여 여러 파이프라인의 이벤트 로그에 액세스할 수 없습니다.event_log
table 값 있는 함수 통해 만든 보기를 다른 사용자와 공유할 수 없습니다.
참고 항목
구체화된 뷰 views을 지원하는 기본 파일에는 구체화된 뷰 정의에 나타나지 않는 상류 tables의 데이터(개인 식별 가능한 정보가 포함된)가 포함될 수 있습니다. 이 데이터는 머테리얼라이즈된 views의 점진적 갱신을 지원하기 위해 기본 스토리지에 자동으로 추가됩니다.
구체화된 뷰의 기본 저장소 파일은 구체화된 뷰 schema의 일부가 아닌 업스트림 tables의 일부 데이터를 노출할 위험이 있으므로, Databricks는 신뢰할 수 없는 다운스트림 소비자와 기본 저장소를 공유하지 않는 것이 좋습니다.
예를 들어 구체화된 뷰 정의에 절이 포함되어 있다고 가정합니다 COUNT(DISTINCT field_a)
. 구체화된 뷰 정의에는 집계 COUNT DISTINCT
절만 포함되지만, 기본 파일에는 field_a
의 실제 values의 list이 포함됩니다.
Hive 메타스토어와 Unity Catalog 파이프라인을 함께 사용할 수 있나요?
작업 영역에는 Unity Catalog을 사용하는 파이프라인과 레거시 Hive 메타스토어가 포함될 수 있습니다. 그러나 단일 파이프라인은 Hive 메타스토어 및 Unity Catalog에 쓸 수 없습니다. Hive metastore에 쓰는 기존 파이프라인은 Unity Catalog사용하도록 업그레이드할 수 없습니다.
Unity Catalog를 사용하지 않는 기존 파이프라인은 Unity Catalog로 구성된 새 파이프라인을 생성하더라도 영향을 받지 않습니다. 이러한 파이프라인은 구성된 스토리지 위치를 사용하여 Hive 메타스토어에 데이터를 계속 유지합니다.
특별히 달리 지정하지 않는 한 이 문서에 나오는 모든 기존 데이터 원본과 Delta Live Tables 기능은 Unity Catalog를 사용하는 파이프라인에서 지원됩니다. Python 및 SQL 인터페이스는 모두 Unity Catalog사용하는 파이프라인에서 지원됩니다.
기존 기능의 변경 내용
Delta Live Tables가 Unity Catalog에 데이터를 저장하도록 구성되면, table의 수명 주기는 Delta Live Tables 파이프라인에 의해 관리됩니다. 파이프라인은 table 수명 주기 및 권한을 관리하기 때문입니다.
- Delta Live Tables 파이프라인 정의에서 table이 제거되면, 다음 파이프라인 update에서 Unity Catalog의 해당 구체화된 뷰 또는 스트리밍 table 항목이 제거됩니다. 실제 데이터는 실수로 삭제된 경우 복구할 수 있도록 기간 동안 보존됩니다. 데이터를 복구하기 위해 구체화된 뷰나 스트리밍 table를 파이프라인 정의에 다시 추가할 수 있습니다.
- Delta Live Tables 파이프라인을 삭제하면 해당 파이프라인에 정의된 모든 tables이 삭제됩니다. 이 변경으로 인해 Delta Live Tables UI가 업데이트되어 파이프라인 삭제를 확인하라는 메시지가 표시됩니다.
- 사용자가 직접 액세스할 수 없는 내부 지원 tables에는
APPLY CHANGES INTO
을 지원하는 데 사용되는 것을 포함합니다.
tables을 Delta Live Tables 파이프라인에서 Unity Catalog로 쓰기
참고 항목
파이프라인에 대해 selectcatalog하고 대상 schema을(를) 설정하지 않으면, tables은 Unity Catalog에 게시되지 않으며 동일한 파이프라인의 쿼리에서만 액세스할 수 있습니다.
Unity Catalog에 tables을(를) 작성하려면 워크스페이스를 통해 파이프라인을 이를 수행하도록 구성해야 합니다. 파이프라인만들
Unity Catalog 파이프라인에 데이터 적재하기
Unity Catalog 사용하도록 구성된 파이프라인은 다음에서 데이터를 읽을 수 있습니다.
- Unity Catalog 관리 및 외부 tables, views, 구체화된 views 및 스트리밍 tables.
- Hive 메타스토어 tables 및 views.
-
read_files()
함수를 사용하여 Unity Catalog 외부 위치에서 읽는 자동 로더입니다. - Apache Kafka 및 Amazon Kinesis.
다음은 Unity Catalog 및 Hive 메타스토어 tables읽기 예입니다.
Unity Catalogtable에서 일괄 인제스트
SQL
CREATE OR REFRESH MATERIALIZED VIEW
table_name
AS SELECT
*
FROM
my_catalog.my_schema.table1;
Python
@dlt.table
def table_name():
return spark.read.table("my_catalog.my_schema.table")
Unity Catalogtable 변경 내용 스트리밍
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 Catalog를 사용하는 파이프라인은 hive_metastore
catalog을 사용하여 Hive 메타스토어 tables에서 데이터를 읽을 수 있습니다.
SQL
CREATE OR REFRESH MATERIALIZED VIEW
table_name
AS SELECT
*
FROM
hive_metastore.some_schema.table;
Python
@dlt.table
def table3():
return spark.read.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}")
)
구체화된 views의 공유
기본적으로 파이프라인 소유자만 파이프라인에서 만든 데이터 세트를 쿼리할 수 있는 권한이 있습니다. 다른 사용자에게 GRANT 문을 사용하여 table를 쿼리할 수 있는 권한을 부여할 수 있으며, REVOKE 문을 사용하여 쿼리 액세스를 revoke할 수 있습니다. Unity Catalog의 권한에 대한 자세한 내용은 Unity Catalog에서 권한 관리를 참조하세요.
Grant select on a table
GRANT SELECT ON TABLE
my_catalog.my_schema.table_name
TO
`user@databricks.com`
table Revoke select
REVOKE SELECT ON TABLE
my_catalog.my_schema.table_name
FROM
`user@databricks.com`
Grant 생성 table 또는 물리화된 뷰 권한
GRANT CREATE { MATERIALIZED VIEW | TABLE } ON SCHEMA
my_catalog.my_schema
TO
{ principal | user }
파이프라인에 대한 계보 보기
Delta Live Tables 파이프라인의 tables 계보는 Catalog 탐색기에 표시됩니다. Catalog 탐색기 계보 UI는 Unity Catalog가 지원하는 파이프라인에서 구체화된 views 또는 스트리밍 tables에 대한 업스트림 및 다운스트림 tables을 표시합니다. Unity Catalog 계보에 대해 더 알고 싶다면, Unity 을 사용하여 Catalog데이터 계보를 캡처하고 보는 방법을 참조하십시오.
Unity Catalog활성화된 Delta Live Tables 파이프라인의 구체화된 보기 또는 스트리밍 table의 경우 현재 작업 영역에서 해당 파이프라인에 액세스할 수 있으면, Catalog 탐색기 계보 UI는 구체화된 보기 또는 스트리밍 table를 생성한 파이프라인에 연결할 것입니다.
스트리밍 table 데이터 추가, 변경 또는 삭제
insert, update, 삭제 및 병합 명령문을 포함한 데이터 조작 언어(DML) 명령문을 사용하여 Unity Catalog에 게시된 스트리밍 tables를 수정할 수 있습니다. 스트리밍 tables 대한 DML 쿼리를 지원하면 GDPR(일반 데이터 보호 규정)을 준수하기 위해 tables 업데이트하는 등의 사용 사례를 사용할 수 있습니다.
참고 항목
- 스트리밍 table의 tableschema을 수정하는 DML 문은 지원되지 않습니다. DML 문이 tableschema을 변경하려고 시도하지 않는지 확인하십시오.
- 스트리밍 updatetable DML 문은 Databricks Runtime 13.3 LTS 이상을 사용하는 공유 Unity Catalog 클러스터 또는 SQL 웨어하우스에서만 실행할 수 있습니다.
- 스트리밍에는 추가 전용 데이터 원본이 필요하기 때문에 처리에 변경 내용이 있는 원본 스트리밍 table 스트리밍이 필요한 경우(예: DML 문) 원본 스트리밍 table읽을 때 skipChangeCommits 플래그set.
skipChangeCommits
가 set일 때, 원본 table에서 레코드를 삭제하거나 수정하는 트랜잭션은 무시됩니다. 처리에 스트리밍 table가 필요하지 않은 경우, 추가 전용 제한이 없는 구체화된 뷰를 대상 table로 사용할 수 있습니다.
다음은 스트리밍 table에서 레코드를 수정하는 DML 문의 예입니다.
특정 ID를 사용하여 레코드 삭제:
DELETE FROM my_streaming_table WHERE id = 123;
ID가 특정한 Update 레코드.
UPDATE my_streaming_table SET name = 'Jane Doe' WHERE id = 123;
tables 행 필터 및 column 마스크를 사용하여 게시
Important
이 기능은 공개 미리 보기 상태입니다.
행 필터를table 검사가 행을 가져올 때마다 필터로 적용되는 함수를 지정할 수 있습니다. 이러한 필터를 통해 후속 쿼리는 필터 조건자가 true로 평가되는 행만 반환합니다.
행 필터 및 Column 마스크 관리
행 필터와 column 마스크를 구체화된 views과 스트리밍 tables에서 추가, 업데이트, 또는 삭제하려면 CREATE OR REFRESH
명령문을 사용해야 합니다.
행 필터 및 column 마스크를 사용하여 tables 정의하는 방법에 대한 자세한 구문은 Delta Live Tables SQL 언어 참조 및 Delta Live Tables Python 언어 참조참조하세요.
동작
다음은 Delta Live Tables 파이프라인에서 행 필터 또는 column 마스크를 사용할 때 중요한 세부 정보입니다.
- 소유자
: 파이프라인 이 구체화된 보기나 스트리밍 을 새로 고칠 때, 행 필터 및 마스크 함수가 파이프라인 소유자의 권한으로 실행됩니다. 즉, tablerefresh 파이프라인을 만든 사용자의 보안 컨텍스트를 사용합니다. 사용자 컨텍스트(예: CURRENT_USER
및IS_MEMBER
)를 확인하는 함수는 파이프라인 소유자의 사용자 컨텍스트를 사용하여 평가됩니다. -
쿼리: 구체화된 뷰 또는 스트리밍 table를 쿼리할 때, 사용자 컨텍스트를 확인하는 함수(예:
CURRENT_USER
및IS_MEMBER
)는 호출자의 사용자 컨텍스트를 사용하여 평가됩니다. 이 방법은 현재 사용자의 컨텍스트에 따라 사용자별 데이터 보안 및 액세스 제어를 적용합니다. - 원본 tables에 행 필터와 column 마스크가 포함된 경우, 구체화된 views을 만들 때 구체화된 뷰의 refresh은 항상 전체 refresh입니다. 전체 refresh는 소스에서 사용할 수 있는 모든 데이터를 최신 정의를 적용하여 재처리합니다. 이 프로세스는 원본 tables 보안 정책이 가장 up-to날짜 데이터 및 정의와 함께 평가되고 적용되는지 확인합니다.
가시성
DESCRIBE EXTENDED
, INFORMATION_SCHEMA
또는 Catalog 탐색기를 사용하여 지정된 구체화된 뷰나 스트리밍 table에 적용되는 기존 행 필터 및 column 마스크를 검사합니다. 이 기능성을 사용하면 구체화된 views 및 스트리밍 tables에 대한 데이터 액세스 및 보호 조치를 감사하고 검토할 수 있습니다.