Databricks SQL에서 스트리밍 테이블을 사용하여 데이터 로드하기
Databricks는 Databricks SQL을 사용하여 데이터를 가져올 때 스트리밍 테이블을 사용하는 것을 권장합니다. 스트리밍 테이블은 스트리밍 또는 증분 데이터 처리에 대한 추가 지원이 있는 Unity Catalog에 등록된 테이블입니다. 각 스트리밍 테이블에 대해 DLT 파이프라인이 자동으로 만들어집니다. 스트리밍 테이블을 사용하여 Kafka 및 클라우드 개체 스토리지에서 증분 데이터를 로드할 수 있습니다.
이 문서는 Unity 카달로그 볼륨(권장) 또는 외부 위치로 구성된 클라우드 객체 스토리지에서 데이터를 로드하기 위해 스트리밍 테이블을 사용하는 방법을 설명합니다.
참고
Delta Lake 테이블을 스트리밍 원본 및 싱크로 사용하는 방법을 확인하려면 Delta 테이블 스트리밍 읽기 및 쓰기를 참조 하세요.
중요한
Databricks SQL에서 만든 스트리밍 테이블은 서버리스 DLT 파이프라인에서 지원됩니다. 이 기능을 사용하려면 작업 영역에서 서버리스 파이프라인을 지원해야 합니다.
시작하기 전에
시작하기 전에 다음 요구 사항을 충족해야 합니다.
작업 영역 요구 사항:
- 서버리스가 활성화된 Azure Databricks 계정. 자세한 내용은 서버리스 SQL 웨어하우스 활성화를 참조하세요.
- Unity 카탈로그를 사용하도록 설정된 작업 영역입니다. 자세한 내용은 Unity 카탈로그 설정 및 관리를 참조하십시오.
컴퓨팅 요구 사항:
다음 중 하나를 사용해야 합니다.
-
Current
채널을 사용하는 SQL 웨어하우스입니다. - Databricks Runtime 13.3 LTS 이상에서 표준 액세스 모드(이전의 공유 액세스 모드)를 사용하여 컴퓨팅합니다.
Databricks Runtime 15.4 LTS 이상에서 전용 액세스 모드(이전의 단일 사용자 액세스 모드)를 사용하여 컴퓨팅합니다.
Databricks Runtime 15.3 이하에서는 전용 컴퓨팅을 사용하여 다른 사용자가 소유한 스트리밍 테이블을 쿼리할 수 없습니다. 스트리밍 테이블을 소유하고 있는 경우에만 Databricks Runtime 15.3 이하에서 전용 컴퓨팅을 사용할 수 있습니다. 테이블을 만든 사람이 소유자입니다.
Databricks Runtime 15.4 LTS 이상은 테이블 소유권에 관계없이 전용 컴퓨팅의 DLT 생성 테이블에 대한 쿼리를 지원합니다. Databricks Runtime 15.4 LTS 이상에서 제공되는 데이터 필터링을 활용하려면 DLT 생성 테이블을 지원하는 데이터 필터링 기능이 서버리스 컴퓨팅에서 실행되기 때문에 작업 영역 서버리스 컴퓨팅 사용하도록 설정되어 있는지 확인해야 합니다. 전용 컴퓨팅을 사용하여 데이터 필터링 작업을 실행하는 경우 서버리스 컴퓨팅 리소스에 대한 요금이 부과될 수 있습니다. 세분화된 액세스 제어에 대한 정보를 보려면 전용 컴퓨팅(이전의 단일 사용자 컴퓨팅)에서 을(를) 참조하세요.
권한 요구 사항
- Unity 카탈로그 외부 위치에 대한
READ FILES
권한. 자세한 내용은 클라우드 스토리지를 Azure Databricks에 연결하기 위한 외부 위치 생성 방법을 참조하십시오. - 스트리밍 테이블을 생성하는 카탈로그에 대한
USE CATALOG
권한. - 스트리밍 테이블을 생성하는 스키마에 대한
USE SCHEMA
권한. - 스트리밍 테이블을 생성하는 스키마에 대한
CREATE TABLE
권한.
기타 요구 사항:
원본 데이터의 경로.
볼륨 경로 예제:
/Volumes/<catalog>/<schema>/<volume>/<path>/<file-name>
외부 위치 경로 예제:
abfss://myContainer@myStorageAccount.dfs.core.windows.net/analysis
참고
이 문서는 로드하려는 데이터가 사용자에게 접근 권한이 있는 Unity Catalog 볼륨이나 외부 위치에 위치한 클라우드 스토리지에 있다고 가정합니다.
원본 데이터 검색 및 미리 보기
작업 영역의 사이드바에서 쿼리를 클릭한 다음 쿼리 만들기.를 클릭합니다.
쿼리 편집기에서 드롭다운 목록에서
Current
채널을 사용하는 SQL 웨어하우스를 선택합니다.원본 데이터를 식별하는 정보를 꺾쇠 괄호(
<>
) 안에 값을 대입하여 편집기에 다음을 붙여넣은 다음 실행을 클릭합니다.참고
함수의 기본값이 데이터를 해석할 수 없는 경우,
read_files
테이블 반환 함수를 실행할 때 스키마 유추 오류가 발생할 수 있습니다. 예를 들어, 여러 줄로 구성된 CSV 또는 JSON 파일의 경우, 여러 줄 모드를 설정해야 할 수 있습니다. 파서 옵션 목록은 테이블 반환 함수read_files
참조하세요./* Discover your data in a volume */ LIST "/Volumes/<catalog>/<schema>/<volume>/<path>/<folder>" /* Preview your data in a volume */ SELECT * FROM read_files("/Volumes/<catalog>/<schema>/<volume>/<path>/<folder>") LIMIT 10 /* Discover your data in an external location */ LIST "abfss://<container>@<storage-account>.dfs.core.windows.net/<path>/<folder>" /* Preview your data */ SELECT * FROM read_files("abfss://<container>@<storage-account>.dfs.core.windows.net/<path>/<folder>") LIMIT 10
스트리밍 테이블에 데이터 로드하기
클라우드 개체 스토리지의 데이터에서 스트리밍 테이블을 만들려면 다음을 쿼리 편집기에 붙여넣고 실행을 클릭합니다:
/* Load data from a volume */
CREATE OR REFRESH STREAMING TABLE <table-name> AS
SELECT * FROM STREAM read_files('/Volumes/<catalog>/<schema>/<volume>/<path>/<folder>')
/* Load data from an external location */
CREATE OR REFRESH STREAMING TABLE <table-name> AS
SELECT * FROM STREAM read_files('abfss://<container>@<storage-account>.dfs.core.windows.net/<path>/<folder>')
런타임 채널 설정
SQL 웨어하우스를 사용하여 만든 스트리밍 테이블은 DLT 파이프라인을 사용하여 자동으로 새로 고쳐집니다. DLT 파이프라인은 기본적으로 current
채널에서 런타임을 사용합니다. 릴리스 프로세스에 대한 자세한 내용은 DLT 릴리스 정보 및 릴리스 업그레이드 프로세스 참조하세요.
Databricks는 프로덕션 워크로드에 current
채널을 사용하는 것이 좋습니다. 새로운 기능은 preview
채널에 먼저 발표됩니다. 테이블 속성으로 preview
지정하여 새 기능을 테스트하도록 파이프라인을 미리 보기 DLT 채널로 설정할 수 있습니다. 테이블을 만들 때 또는 ALTER 문을 사용하여 테이블을 만든 후에 이 속성을 지정할 수 있습니다.
다음 코드 예제에서는 CREATE 문에서 채널을 미리 보기로 설정하는 방법을 보여 줍니다.
CREATE OR REPLACE MATERIALIZED VIEW foo.default.bar
TBLPROPERTIES ('pipelines.channel' = 'preview') as
SELECT
*
FROM
range(5)
DLT 파이프라인을 사용하여 스트리밍 테이블 새로 고침
이 섹션에서는 쿼리에 정의된 원본에서 사용할 수 있는 최신 데이터를 사용하여 스트리밍 테이블을 새로 고치는 패턴을 설명합니다.
스트리밍 테이블을 CREATE
또는 REFRESH
경우 업데이트는 서버리스 DLT 파이프라인을 사용하여 처리합니다. 정의한 각 스트리밍 테이블에는 연결된 DLT 파이프라인이 있습니다.
REFRESH
명령을 실행하면 DLT 파이프라인 링크가 반환됩니다. DLT 파이프라인 링크를 사용하여 새로 고침 상태를 확인할 수 있습니다.
참고
테이블 소유자만 스트리밍 테이블을 새로 고쳐 최신 데이터를 가져올 수 있습니다. 테이블을 만드는 사용자는 소유자이며 소유자는 변경할 수 없습니다. 시간 이동 쿼리를 사용하기 전에 스트리밍 테이블을 새로 고쳐야 할 수 있습니다.
새 데이터만 수집
기본적으로 read_files
함수는 테이블을 만드는 동안 원본 디렉터리의 모든 기존 데이터를 읽은 다음 새로 고칠 때마다 새로 도착한 레코드를 처리합니다.
테이블을 만들 때 원본 디렉터리에 이미 있는 데이터를 수집하지 않도록 하려면 includeExistingFiles
옵션을 false
설정합니다. 즉, 테이블을 만든 후에 디렉터리에 도착하는 데이터만 처리됩니다. 예시:
CREATE OR REFRESH STREAMING TABLE my_bronze_table
AS SELECT *
FROM STREAM read_files(
'abfss://myContainer@myStorageAccount.dfs.core.windows.net/analysis/*/*/*.json',
includeExistingFiles => false)
스트리밍 테이블 완전히 새로 고침
전체 새로 고침은 원본에서 사용 가능한 모든 데이터를 최신 정의로 다시 처리합니다. Kafka와 같이 전체 데이터 기록을 유지하지 않거나 보존 기간이 짧은 원본에 대해 전체 새로 고침을 호출하는 것은 권장되지 않습니다. 이는 전체 새로 고침이 기존 데이터를 잘라내기 때문입니다. 데이터가 더 이상 원본에 남아 있지 않으면 이전 데이터를 복구하지 못할 수 있습니다.
예시:
REFRESH STREAMING TABLE my_bronze_table FULL
자동 새로 고침을 위한 스트리밍 테이블 예약
스트리밍 테이블을 정의된 일정에 따라 자동으로 새로 고침하도록 구성하려면, 다음 코드를 쿼리 편집기에 붙여넣고 실행을 클릭하세요.
ALTER STREAMING TABLE
[[<catalog>.]<database>.]<name>
ADD [SCHEDULE [REFRESH]
CRON '<cron-string>'
[ AT TIME ZONE '<timezone-id>' ]];
예를 들어 새로 고침 일정 쿼리는 ALTER STREAMING TABLE참조하세요.
새로 고침 상태 추적하기
DLT UI에서 스트리밍 테이블을 관리하는 파이프라인을 보거나 스트리밍 테이블에 대한 DESCRIBE EXTENDED
명령에서 반환된 새로 고침 정보 확인하여 스트리밍 테이블 새로 고침의 상태를 볼 수 있습니다.
DESCRIBE EXTENDED <table-name>
Kafka에서 데이터 스트리밍 수집
카프카에서 스트리밍 수집 사례는 read_kafka를 참조하세요.
사용자에게 스트리밍 테이블에 대한 접근 권한을 부여하세요
사용자에게 스트리밍 테이블에 대한 SELECT
권한을 부여하여 쿼리할 수 있도록 하려면 쿼리 편집기에 다음을 붙여넣고 실행을 클릭합니다.
GRANT SELECT ON TABLE <catalog>.<schema>.<table> TO <user-or-group>
Unity Catalog 보안 개체에 대한 권한 부여에 대한 자세한 내용은 Unity Catalog 권한 및 보안 개체를 참조하세요.
스트리밍 테이블에서 레코드를 영구 삭제하기
중요한
스트리밍 테이블이 있는 REORG
문을 지원하는 기능은 공개 미리보기에 있습니다.
참고
- 스트리밍 테이블과 함께
REORG
문을 사용하려면 Databricks Runtime 15.4 이상이 필요합니다. - 모든 스트리밍 테이블에서
REORG
문을 사용할 수 있지만 삭제 벡터가 사용하도록 설정된 스트리밍 테이블에서 레코드를 삭제할 때만. 이 명령은 삭제 벡터를 사용하지 않고 스트리밍 테이블과 함께 사용할 때 아무런 영향을 주지 않습니다.
GDPR 규정 준수와 같이 삭제 벡터가 활성화된 스트리밍 테이블의 기본 스토리지에서 레코드를 물리적으로 삭제하려면 스트리밍 테이블의 데이터에서 VACUUM 작업이 실행되도록 추가 단계를 수행해야 합니다.
다음은 이러한 단계를 자세히 설명합니다.
- 스트리밍 테이블에서 레코드를 업데이트하거나 레코드를 삭제합니다.
-
APPLY (PURGE)
매개 변수를 지정하여 스트리밍 테이블에 대해REORG
문을 실행합니다. 예를 들어REORG TABLE <streaming-table-name> APPLY (PURGE);
. - 스트리밍 테이블의 데이터 보존 기간이 경과할 때까지 기다립니다. 기본 데이터 보존 기간은 7일이지만
delta.deletedFileRetentionDuration
테이블 속성으로 구성할 수 있습니다. 시간 이동 쿼리에 대한 데이터 보존 구성을 참조하세요. -
REFRESH
스트리밍 테이블. DLT 파이프라인 사용하여 스트리밍 테이블 새로 고침참조하세요.REFRESH
작업 후 24시간 이내에 레코드가 영구적으로 삭제되도록 하는 데 필요한VACUUM
작업을 포함한 DLT 유지 관리 작업이 자동으로 실행됩니다. DLT 수행하는유지 관리 작업을 참조하세요.
쿼리 기록을 사용하여 실행 모니터링
쿼리 기록 페이지를 사용하여 스트리밍 테이블 업데이트를 실행하는 데 사용되는 DLT 파이프라인에서 성능이 저조한 쿼리 및 병목 상태를 식별하는 데 도움이 되는 쿼리 세부 정보 및 쿼리 프로필에 액세스할 수 있습니다. 쿼리 기록 및 쿼리 프로필에서 사용할 수 있는 정보의 종류에 대한 개요는 쿼리 기록 및 쿼리 프로필을 참조하세요.
중요
이 기능은 공개 미리 보기 상태입니다. 작업 영역 관리자는 미리 보기 페이지에서 이 기능을 사용하도록 설정할 수 있습니다 . Azure Databricks 미리 보기 관리를 참조하세요.
스트리밍 테이블과 관련된 모든 문이 쿼리 기록에 표시됩니다.
문 드롭다운 필터를 사용하여 명령을 선택하고 관련 쿼리를 검사할 수 있습니다. 모든 CREATE
문 뒤에는 DLT 파이프라인에서 비동기적으로 실행되는 REFRESH
문이 잇습니다.
REFRESH
문장은 일반적으로 성능 최적화를 위한 인사이트를 제공하는 자세한 쿼리 계획을 포함합니다.
쿼리 기록 UI에서 REFRESH
문서에 액세스하려면 다음 단계를 사용하세요.
- 왼쪽 사이드바를 클릭하여
쿼리 기록 UI를 엽니다.
- REFRESH을 문장 드롭다운 필터에서 선택합니다.
- 쿼리 문 이름을 클릭하여 쿼리 기간 및 집계 메트릭과 같은 요약 세부 정보를 봅니다.
- 쿼리 프로필 보기를 클릭하여 쿼리 프로필을 엽니다. 쿼리 프로필 탐색에 대한 자세한 내용은 쿼리 프로필을 참조하세요.
- 필요에 따라 쿼리 원본 섹션의 링크를 사용하여 관련 쿼리 또는 파이프라인을 열 수 있습니다.
SQL 편집기 또는 SQL 웨어하우스에 연결된 Notebook의 링크를 사용하여 쿼리 세부 정보에 액세스할 수도 있습니다.