주요 컨텐츠로 이동
플랫폼

Unity Catalog에서 Delta Sharing과 함께 Structured Streaming 사용하기

작성자: Will Girten, Josh Seidel, Lin Zhou , 사친 타쿠르

Azure, AWS, GCP에서 Delta Sharing과 함께 Structured Streaming을 사용하는 기능이 정식 출시(GA)되었음을 발표하게 되어 기쁩니다! 이 새로운 기능을 통해 Databricks Lakehouse Platform의 데이터 수신자는 Unity Catalog를 통해 공유된 Delta Table의 변경 사항을 스트리밍할 수 있습니다.

데이터 제공자는 이 기능을 통해 서비스형 데이터(data-as-a-service)를 쉽게 확장하고, 대용량 데이터 세트 공유에 따른 운영 비용을 절감하며, 새 데이터가 도착하는 즉시 데이터 검증 및 품질 검사를 수행하여 데이터 품질을 향상시키고, 실시간 데이터 제공으로 고객 서비스를 개선할 수 있습니다. 마찬가지로 데이터 수신자는 공유된 데이터 세트에서 최신 변경 사항을 스트리밍하여 대용량 배치 데이터를 처리하는 인프라 비용을 줄이고 최첨단 실시간 데이터 애플리케이션 구축의 기반을 마련할 수 있습니다. 다음과 같이 다양한 산업 분야의 데이터 수신자가 이 새로운 기능의 혜택을 누릴 수 있습니다.

  • 리테일: 데이터 분석가는 계절별 패션 라인의 최신 매출 수치를 스트리밍하고 BI 리포트 형태로 비즈니스 인사이트를 제시할 수 있습니다.
  • 헬스케어 및 생명과학: 의료 종사자는 심전도 측정 데이터를 ML 모델로 스트리밍하여 이상 징후를 식별할 수 있습니다.
  • 제조업: 건물 관리 팀은 스마트 온도 조절기 판독값을 스트리밍하여 냉난방 장치를 효율적으로 켜고 꺼야 하는 낮이나 밤의 시간대를 파악할 수 있습니다.

데이터 팀은 배치 실행이 안정적이고 구현하기 쉽기 때문에 배치 방식으로 실행되는 데이터 파이프라인에 의존하는 경우가 많습니다. 하지만 오늘날 조직에서는 실시간 비즈니스 의사를 결정하기 위해 가장 최근에 도착한 데이터가 필요합니다. Structured Streaming은 실시간 처리를 단순화할 뿐만 아니라 배치 작업의 수를 단 몇 개의 스트리밍 작업으로 줄여 배치 처리도 단순화합니다. Structured Streaming은 동일한 DataFrame API를 지원하므로 배치 데이터 파이프라인을 스트리밍으로 전환하는 것이 매우 간단합니다.

이 블로그 게시물에서는 금융 산업의 예를 통해 기업이 Delta Sharing과 함께 Structured Streaming을 활용하여 전실시간(near real-time)으로 데이터의 비즈니스 가치를 극대화하는 방법을 살펴보겠습니다. 또한 Databricks Workflows와 같은 다른 상호 보완적인 기능을 Delta Sharing 및 Unity Catalog와 함께 사용하여 실시간 데이터 애플리케이션을 구축하는 방법도 살펴보겠습니다.

Structured Streaming 지원

지난 몇 달 동안 가장 기대를 모았던 Delta Sharing 기능은 아마도 공유된 Delta Table을 Structured Streaming의 소스로 사용하는 지원 기능 추가였을 것입니다. 이 새로운 기능을 통해 데이터 수신자는 Databricks Lakehouse Platform의 Unity Catalog를 통해 공유된 Delta Table을 사용하여 실시간 애플리케이션을 구축할 수 있습니다.

Delta Sharing에서 공유된 Delta Table을 Structured Streaming 소스로 사용하는 기능을 이제 지원합니다.
Delta Sharing에서 공유된 Delta Table을 Structured Streaming 소스로 사용하는 기능을 이제 지원합니다.

Structured Streaming에서 Delta Sharing을 사용하는 방법

데이터 수신자가 실시간 트레이딩 인사이트를 위해 상장 주식 종목 정보를 스트리밍하는 방법을 자세히 살펴보겠습니다. 이 문서에서는 미국 NMS(National Market System) 전체에서 거래되는 모든 주식 및 지분 증권을 나열하는 FINRA CAT Reportable Equity Securities Symbol Master 데이터 세트를 사용합니다. Structured Streaming은 실시간 애플리케이션을 구축하는 데 사용할 수 있지만, 데이터 도착 빈도가 낮은 시나리오에서도 유용할 수 있습니다. 간단한 노트북 데모를 위해 하루에 세 번, 즉 거래일 시작 시점(SOD)에 한 번, 장중 변경 사항을 반영하기 위해 낮 동안 두 번째, 거래일 종료 시점(EOD)에 세 번째로 업데이트되는 데이터 세트를 사용합니다. 주말이나 미국 공휴일에는 업데이트가 게시되지 않습니다.

게시된 파일일정
CAT Reportable Equity Securities Symbol Master – SOD오전 6:00 EST
CAT Reportable Options Securities Symbol Master – SOD오전 6:00 EST
회원 ID (IMID) 목록오전 6:00 EST
회원 ID (IMID) 충돌 목록오전 6:00 EST
CAT Reportable Equity Securities Symbol Master – Intraday오전 10:30 EST, EOD 파일이 게시될 때까지 약 2시간마다
CAT Reportable Options Securities Symbol Master – Intraday오전 10:30 EST, EOD 파일이 게시될 때까지 약 2시간마다
CAT Reportable Equity Securities Symbol Master – EOD오후 8:00 EST
CAT Reportable Options Securities Symbol Master – EOD오후 8:00 EST

표 1.1 - FINRA CAT 종목 및 회원 참조 데이터는 영업일 내내 게시됩니다. 주말이나 미국 공휴일에는 업데이트가 게시되지 않습니다.

데이터 제공자 관점: Databricks Workflows를 사용한 CAT 데이터 수집

Databricks Lakehouse Platform의 주요 장점 중 하나는 변경 사항을 Delta Table로 지속적으로 스트리밍하는 것이 매우 쉽다는 점입니다. 먼저 거래일 시작 시점(SOD)에 FINRA CAT 주식 증권 종목 파일을 다운로드하는 간단한 Python 작업을 정의하는 것부터 시작해보겠습니다. 그 후 게시된 파일을 Databricks 파일 시스템의 임시 디렉터리에 저장합니다.

코드 1.1. - 간단한 Python 작업으로 거래일 시작 시점에 FINRA CAT 주식 종목 파일을 다운로드할 수 있습니다.

시연을 위해 원본 파일을 수집하고 업데이트된 파일이 게시될 때마다 Delta Lake의 브론즈 테이블을 지속적으로 업데이트하는 함수도 정의하겠습니다.

코드 1.2 - FINRA CAT 주식 종목 데이터는 각 거래일 시작 시점에 Delta Table로 수집됩니다.

시작되면 Databricks Workflow는 각 거래일 시작 시점에 파일이 게시될 때마다 CAT 주식 종목 데이터 세트를 생성하기 시작합니다.

그림 1.1. - CAT 주식 종목 마스터 파일(CSV)은 매일 거래일 시작 시점에 수집되어 브론즈 Delta Table에 적재됩니다.
그림 1.1. - CAT 주식 종목 마스터 파일(CSV)은 매일 거래일 시작 시점에 수집되어 브론즈 Delta Table에 적재됩니다.

데이터 제공자 관점: Delta Table을 스트리밍 소스로 공유하기

거래일마다 종목 코드 파일의 업데이트를 수집하는 스트리밍 파이프라인을 생성했으므로, 이제 Delta Sharing을 활용해 데이터 수신자와 Delta Table을 공유할 수 있습니다. Databricks Lakehouse Platform에서 Delta Share를 생성하려면 버튼을 몇 번 클릭하거나 SQL 구문을 선호하는 경우 단일 SQL 문을 사용하면 됩니다.

그림 1.2 - 데이터 제공자는 먼저 나중에 공유 Delta Table을 보관할 Delta Share를 생성합니다.
그림 1.2 - 데이터 제공자는 먼저 나중에 공유 Delta Table을 보관할 Delta Share를 생성합니다.

마찬가지로 데이터 제공자는 '자산 관리(Manage assets)' 버튼을 클릭한 다음 '테이블 편집(Edit tables)' 버튼을 클릭하여 하나 이상의 테이블로 Delta Share를 채울 수 있습니다. 이 경우 주식 종목 코드 데이터가 포함된 브론즈 Delta Table이 Share 개체에 추가됩니다.

그림 1.3 - Delta Sharing 제공자는 일반적인 Delta 테이블과 마찬가지로 스트리밍 테이블을 Delta Share에 추가할 수 있습니다.
그림 1.3 - Delta Sharing 제공자는 일반적인 Delta 테이블과 마찬가지로 스트리밍 테이블을 Delta Share에 추가할 수 있습니다.

Structured Streaming을 사용한 읽기를 지원하려면 Delta 테이블의 전체 히스토리를 공유해야 합니다. Databricks UI를 사용하여 Share에 Delta 테이블을 추가할 때는 히스토리 공유가 기본적으로 활성화되어 있습니다. 그러나 SQL 구문을 사용할 때는 히스토리 공유를 명시적으로 지정해야 합니다.

코드 1.4 - SQL 구문을 사용할 때 Structured Streaming 읽기를 지원하려면 Delta 테이블의 히스토리를 명시적으로 공유해야 합니다.

데이터 수신자 관점: 공유된 Delta Table 스트리밍

그림 1.4 - 데이터 수신자는 Delta Share에서 새 카탈로그를 생성할 수 있습니다.
그림 1.4 - 데이터 수신자는 Delta Share에서 새 카탈로그를 생성할 수 있습니다.

데이터 수신자로서 공유된 Delta 테이블에서 스트리밍하는 것 역시 매우 간단합니다! 데이터 수신자와 Delta Share가 공유되고 나면, 수신자는 Unity Catalog의 제공자 세부 정보 아래에 Share가 즉시 표시되는 것을 확인할 수 있습니다. 이후 데이터 수신자는 '카탈로그 생성(Create catalog)' 버튼을 클릭하고 의미 있는 이름을 지정하며 Share 내용을 설명하는 선택적 주석을 추가하여 Unity Catalog에 새 카탈로그를 생성할 수 있습니다.

데이터 수신자는 Databricks Runtime 12.1 이상을 사용하여 Unity Catalog를 통해 공유된 Delta Table에서 스트리밍할 수 있습니다. 이 예시에서는 Databricks 12.2 LTS Runtime이 설치된 Databricks 클러스터를 사용했습니다. 데이터 수신자는 deltaSharing 데이터 소스를 사용하고 공유 테이블의 이름을 제공하여 공유된 Delta 테이블을 Spark Structured Stream으로 읽을 수 있습니다.

코드 1.4 - 데이터 수신자는 deltaSharing 데이터 소스를 사용하여 공유된 Delta Table에서 스트리밍할 수 있습니다.

추가 예시로, 공유된 CAT 주식 종목 코드 마스터 데이터셋을 데이터 수신자의 Unity Catalog 로컬에 있는 주가 히스토리 데이터셋과 결합해 보겠습니다. 먼저 특정 주식 티커 기호의 주간 주가 히스토리를 가져오기 위한 유틸리티 함수를 정의하는 것부터 시작합니다.

다음으로 주식 마스터 데이터 스트림을 3개 대형 기술주인 Apple Inc.(AAPL), Microsoft Corporation(MSFT), NVIDIA Corporation(NVDA)의 로컬 주가 히스토리와 조인합니다.

마지막으로 데이터 수신자는 선택적 대상 싱크(destination sink)를 추가하고 스트리밍 쿼리를 시작할 수 있습니다.

그림 1.6. - 데이터 수신자는 공유된 Delta 테이블을 Spark Structured Stream으로 읽을 수 있습니다.
그림 1.6. - 데이터 수신자는 공유된 Delta 테이블을 Spark Structured Stream으로 읽을 수 있습니다.

Databricks에서 Delta Sharing 시작하기

조직이 Delta Sharing을 활용하여 거의 실시간으로 데이터의 비즈니스 가치를 극대화하는 방법에 대한 이 예시가 유용했기를 바랍니다.

Delta Sharing을 시작하고 싶지만 어디서부터 시작해야 할지 모르시겠나요? 이미 Databricks 고객인 경우 가이드에 따라 Delta Sharing 사용을 시작하세요(AWS | Azure | GCP). 이 기능에 포함된 구성 옵션에 대해 자세히 알아보려면 문서를 읽어보세요. 기존 Databricks 고객이 아닌 경우 프리미엄 또는 엔터프라이즈 워크스페이스로 무료 체험에 신청하세요.

크레딧

Abhijit Chakankar, Lin Zhou, Shixiong Zhu를 포함하여 이번 릴리스에 기여해 주신 모든 분들께 특별한 감사를 전합니다.

리소스

(이 글은 AI의 도움을 받아 번역되었습니다. 원문이 궁금하시다면 여기를 클릭해 주세요)

최신 게시물을 이메일로 받아보세요

블로그를 구독하고 최신 게시물을 이메일로 받아보세요.