Databricks SQL에서 스트리밍 테이블을 사용하여 데이터 로드하기
Databricks는 Databricks SQL을 사용하여 데이터를 가져올 때 스트리밍 테이블을 사용하는 것을 권장합니다. 스트리밍 테이블은 스트리밍 또는 증분 데이터 처리에 대한 추가 지원이 있는 Unity Catalog에 등록된 테이블입니다. 각 스트리밍 테이블에 대해 Delta Live Tables 파이프라인이 자동으로 생성됩니다. 스트리밍 테이블을 사용하여 Kafka 및 클라우드 개체 스토리지에서 증분 데이터를 로드할 수 있습니다.
이 문서는 Unity 카달로그 볼륨(권장) 또는 외부 위치로 구성된 클라우드 객체 스토리지에서 데이터를 로드하기 위해 스트리밍 테이블을 사용하는 방법을 설명합니다.
참고 항목
Delta Lake 테이블을 스트리밍 원본 및 싱크로 사용하는 방법을 확인하려면 Delta 테이블 스트리밍 읽기 및 쓰기를 참조 하세요.
Important
Databricks SQL에서 만든 스트리밍 테이블은 서버리스 Delta Live Tables 파이프라인에서 지원됩니다. 이 기능을 사용하려면 작업 영역에서 서버리스 파이프라인을 지원해야 합니다.
시작하기 전에
시작하기 전에 다음 요구 사항을 충족해야 합니다.
작업 영역 요구 사항:
- 서버리스가 활성화된 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 이상은 테이블 소유권에 관계없이 단일 사용자 컴퓨팅에서 델타 라이브 테이블 생성 테이블에 대한 쿼리를 지원합니다. Delta Live Tables에서 생성된 테이블을 지원하는 데이터 필터링 기능은 서버리스 컴퓨팅에서 실행되므로, Databricks Runtime 15.4 LTS 이상에서 제공되는 데이터 필터링을 활용하려면 작업 영역이 서버리스 컴퓨팅에 사용되도록 설정되어 있는지 확인해야 합니다. 단일 사용자 컴퓨팅을 사용하여 데이터 필터링 작업을 실행할 때 서버리스 컴퓨팅 리소스에 대한 요금이 부과될 수 있습니다. 단일 사용자 컴퓨팅에 대한 세분화된 액세스 제어를 참조 하세요.
권한 요구 사항
- 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 웨어하우스를 사용하여 만든 스트리밍 테이블은 Delta Live Tables 파이프라인을 사용하여 자동으로 새로 고쳐집니다. Delta Live Tables 파이프라인은 기본적으로 채널에서 런타임을 current
사용합니다. 릴리스 프로세스에 대한 자세한 내용은 Delta Live Tables 릴리스 정보 및 릴리스 업그레이드 프로세스를 참조하세요.
Databricks는 프로덕션 워크로드에 current
채널을 사용하는 것이 좋습니다. 새로운 기능이 채널에 preview
처음 릴리스됩니다. 파이프라인을 미리 보기 Delta Live Tables 채널로 설정하여 테이블 속성으로 지정하여 preview
새 기능을 테스트할 수 있습니다. 테이블을 만들 때 또는 ALTER 문을 사용하여 테이블을 만든 후에 이 속성을 지정할 수 있습니다.
다음 코드 예제에서는 CREATE 문에서 채널을 미리 보기로 설정하는 방법을 보여 줍니다.
CREATE OR REPLACE MATERIALIZED VIEW foo.default.bar
TBLPROPERTIES ('pipelines.channel' = 'preview') as
SELECT
*
FROM
range(5)
## <a id="refresh"></a> Refresh a <st> using a DLT pipeline
This section describes patterns for refreshing a <st> with the latest data available from the sources defined in the query.
When you `CREATE` or `REFRESH` a <st>, the update processes using a serverless <DLT> pipeline. Each <st> you define has an associated <DLT> pipeline.
After you run the `REFRESH` command, the DLT pipeline link is returned. You can use the DLT pipeline link to check the status of the refresh.
.. note:: Only the table owner can refresh a <st> to get the latest data. The user that creates the table is the owner, and the owner can't be changed. You might need to refresh your <st> before using [time travel](/delta/history.md#time-travel) queries.
See [_](/delta-live-tables/index.md).
### Ingest new data only
By default, the `read_files` function reads all existing data in the source directory during table creation, and then processes newly arriving records with each refresh.
To avoid ingesting data that already exists in the source directory at the time of table creation, set the `includeExistingFiles` option to `false`. This means that only data that arrives in the directory after table creation is processed. For example:
.. azure::
```sql
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을 참조하세요.
새로 고침 상태 추적하기
스트리밍 테이블을 관리하는 파이프라인을 Delta Live Tables 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 권한 및 보안 개체를 참조하세요.
쿼리 기록을 사용하여 실행 모니터링
쿼리 기록 페이지를 사용하여 스트리밍 테이블 업데이트를 실행하는 데 사용되는 Delta Live Tables 파이프라인에서 제대로 수행되지 않는 쿼리 및 병목 상태를 식별하는 데 도움이 되는 쿼리 세부 정보 및 쿼리 프로필에 액세스할 수 있습니다. 쿼리 기록 및 쿼리 프로필에서 사용할 수 있는 정보의 종류에 대한 개요는 쿼리 기록 및 쿼리 프로필을 참조하세요.
Important
이 기능은 공개 미리 보기 상태입니다. 작업 영역 관리자는 미리 보기 페이지에서 이 기능을 사용하도록 설정할 수 있습니다 . Azure Databricks 미리 보기 관리를 참조하세요.
스트리밍 테이블과 관련된 모든 문이 쿼리 기록에 표시됩니다. 문 드롭다운 필터를 사용하여 명령을 선택하고 관련 쿼리를 검사할 수 있습니다. 모든 CREATE
문 뒤에는 Delta Live Tables 파이프라인에서 비동기적으로 실행되는 문이 잇 REFRESH
습니다. 이 문에는 REFRESH
일반적으로 성능 최적화에 대한 인사이트를 제공하는 자세한 쿼리 계획이 포함됩니다.
쿼리 기록 UI의 문에 액세스 REFRESH
하려면 다음 단계를 사용합니다.
- 왼쪽 사이드바를 클릭하여 쿼리 기록 UI를 엽니다.
- 문 드롭다운 필터에서 새로 고침 확인란을 선택합니다.
- 쿼리 문 이름을 클릭하여 쿼리 기간 및 집계 메트릭과 같은 요약 세부 정보를 봅니다.
- 쿼리 프로필 보기를 클릭하여 쿼리 프로필을 엽니다. 쿼리 프로필 탐색에 대한 자세한 내용은 쿼리 프로필을 참조하세요.
- 필요에 따라 쿼리 원본 섹션의 링크를 사용하여 관련 쿼리 또는 파이프라인을 열 수 있습니다.
SQL 편집기 또는 SQL 웨어하우스에 연결된 Notebook의 링크를 사용하여 쿼리 세부 정보에 액세스할 수도 있습니다.