다음을 통해 공유


Databricks SQL에서 스트리밍 테이블을 사용하여 데이터 로드

Important

이 기능은 공개 미리 보기 상태입니다.

Databricks는 스트리밍 테이블을 사용하여 Databricks SQL을 사용하여 데이터를 수집하는 것이 좋습니다. 스트리밍 테이블은 스트리밍 또는 증분 데이터 처리를 추가로 지원하는 Unity 카탈로그 관리형 테이블입니다. 각 스트리밍 테이블에 대해 Delta Live Tables 파이프라인이 자동으로 만들어집니다. Kafka 및 클라우드 개체 스토리지에서 증분 데이터 로드에 스트리밍 테이블을 사용할 수 있습니다.

이 문서에서는 스트리밍 테이블을 사용하여 Unity 카탈로그 볼륨(권장) 또는 외부 위치로 구성된 클라우드 개체 스토리지에서 데이터를 로드하는 방법을 보여 줍니다.

참고 항목

Delta Lake 테이블을 스트리밍 원본 및 싱크로 사용하는 방법을 알아보려면 Delta 테이블 스트리밍 읽기 및 쓰기를 참조 하세요.

시작하기 전에

시작하기 전에 다음을 확인합니다.

  • 서버리스를 사용하도록 설정된 Azure Databricks 계정. 자세한 내용은 서버리스 SQL 웨어하우스 사용을 참조 하세요.

  • Unity 카탈로그를 사용하도록 설정된 작업 영역입니다. 자세한 내용은 Unity 카탈로그 설정 및 관리를 참조 하세요.

  • 채널을 사용하는 SQL 웨어하우스입니다 Current .

  • Delta Live Tables 파이프라인에서 만든 스트리밍 테이블을 쿼리하려면 Databricks Runtime 13.3 LTS 이상 또는 SQL 웨어하우스를 사용하여 공유 컴퓨팅을 사용해야 합니다. Unity 카탈로그 사용 파이프라인에서 만든 스트리밍 테이블은 할당된 클러스터에서 쿼리하거나 격리 클러스터에서 쿼리할 수 없습니다.

  • READ FILES Unity 카탈로그 외부 위치에 대한 권한입니다. 자세한 내용은 클라우드 스토리지를 Azure Databricks에 연결하는 외부 위치 만들기를 참조 하세요.

  • USE CATALOG 스트리밍 테이블을 만드는 카탈로그에 대한 권한입니다.

  • USE SCHEMA 스트리밍 테이블을 만드는 스키마에 대한 권한입니다.

  • CREATE TABLE 스트리밍 테이블을 만드는 스키마에 대한 권한입니다.

  • 원본 데이터의 경로입니다.

    볼륨 경로 예제: /Volumes/<catalog>/<schema>/<volume>/<path>/<file-name>

    외부 위치 경로 예제: abfss://myContainer@myStorageAccount.dfs.core.windows.net/analysis

    참고 항목

    이 문서에서는 로드하려는 데이터가 액세스 권한이 있는 Unity 카탈로그 볼륨 또는 외부 위치에 해당하는 클라우드 스토리지 위치에 있다고 가정합니다.

원본 데이터 검색 및 미리 보기

  1. 작업 영역의 사이드바에서 쿼리를 클릭한 다음 쿼리 만들기를 클릭합니다.

  2. 쿼리 편집기에서 드롭다운 목록에서 채널을 사용하는 Current SQL 웨어하우스를 선택합니다.

  3. 다음을 편집기에 붙여넣고 원본 데이터를 식별하는 정보에 대한 값을 꺾쇠괄호(<>)로 대체한 다음 실행을 클릭합니다.

    참고 항목

    함수의 기본값이 데이터를 구문 분석할 수 없는 경우 테이블 반환 함수를 실행할 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>')

DLT 파이프라인을 사용하여 스트리밍 테이블 새로 고침

이 섹션에서는 쿼리에 정의된 원본에서 사용할 수 있는 최신 데이터를 사용하여 스트리밍 테이블을 새로 고치는 패턴을 설명합니다.

CREATE 스트리밍 테이블에 대한 작업은 스트리밍 테이블에 데이터를 초기 생성 및 로드하기 위해 Databricks SQL 웨어하우스를 사용합니다. REFRESH 스트리밍 테이블에 대한 작업은 DLT(Delta Live Tables)를 사용합니다. 각 스트리밍 테이블에 대해 DLT 파이프라인이 자동으로 만들어집니다. 스트리밍 테이블을 새로 고치면 새로 고침을 처리하기 위해 DLT 파이프라인에 대한 업데이트가 시작됩니다.

명령을 실행 REFRESH 하면 DLT 파이프라인 링크가 반환됩니다. DLT 파이프라인 링크를 사용하여 새로 고침 상태를 확인할 수 있습니다.

참고 항목

테이블 소유자만 스트리밍 테이블을 새로 고쳐 최신 데이터를 가져올 수 있습니다. 테이블을 만드는 사용자는 소유자이며 소유자는 변경할 수 없습니다.

델타 라이브 테이블이란?을 참조하세요.

새 데이터만 수집

기본적으로 이 함수는 read_files 테이블을 만드는 동안 원본 디렉터리의 모든 기존 데이터를 읽은 다음 새로 고칠 때마다 새로 도착한 레코드를 처리합니다.

테이블을 만들 때 원본 디렉터리에 이미 있는 데이터를 수집하지 않도록 하려면 옵션을 false설정합니다includeExistingFiles. 즉, 테이블을 만든 후에 디렉터리에 도착하는 데이터만 처리됩니다. 예시:

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에서 스트리밍 수집

Kafka에서 스트리밍 수집의 예는 read_kafka 참조하세요.

사용자에게 스트리밍 테이블에 대한 액세스 권한 부여

쿼리할 수 있도록 스트리밍 테이블에 대한 권한을 사용자에게 SELECT 부여하려면 다음을 쿼리 편집기에 붙여넣은 다음 실행을 클릭합니다.

GRANT SELECT ON TABLE <catalog>.<schema>.<table> TO <user-or-group>

Unity 카탈로그 보안 개체에 대한 권한 부여에 대한 자세한 내용은 Unity 카탈로그 권한 및 보안 개체를 참조 하세요.

제한 사항

  • Databricks SQL 스트리밍 테이블은 미국 중남부 및 미국 서부 2 지역에서 지원되지 않습니다.

추가 리소스