구조적 스트리밍 개념

Apache Spark Structured Streaming은 배치 처리에 사용하는 동일한 Spark API로 스트리밍 애플리케이션과 파이프라인을 구축할 수 있게 해줍니다. Azure Databricks에서는 두 가지 처리 모드를 지원합니다:

  • 실시간 모드(RTM): 사기 탐지 및 실시간 개인화와 같은 1초 미만 지연 시간이 필요한 운영 워크로드를 위해 설계되었습니다. RTM은 레코드가 도착하는 즉시 처리하며, 종단 간 지연 시간은 5밀리초에 불과합니다. 실시간 모드 개념을 참조하세요.
  • 마이크로배치 모드: 분석 파이프라인 및 추출, 변환 및 적재(ETL) 작업용으로 설계되었습니다. 마이크로 배치 모드는 스트림을 소규모 배치로 처리하며, 계산 비용과 몇 초 또는 분 단위로 측정되는 지연 요구사항을 균형 있게 조정합니다. 마이크로배치 처리가 기본 모드입니다.

두 모드 모두 동일한 구조화된 스트리밍 API를 사용합니다. 두 모드 모두에서 지원되는 쿼리의 경우, 트리거 및 컴퓨팅 구성을 통해 모드를 전환할 수 있습니다. 실시간 모드 설정을 참조하세요.

구조화된 스트리밍은 Apache Spark™ 선언적 파이프라인 위에 구축된 Lakeflow 파이프라인에서도 스트리밍을 지원합니다. 파이프라인은 오케스트레이션, 체크포인트, 복구를 관리하고, 변환은 SQL이나 Python으로 정의합니다.

단계별 자습서는 첫 번째 구조적 스트리밍 워크로드 실행을 참조하세요.

데이터 스트림에서 읽기

구조적 스트리밍을 사용하여 지원되는 데이터 원본에서 데이터를 증분 방식으로 수집합니다.

특징 설명
자동 로더 클라우드 스토리지에 새 데이터 파일이 도착할 때마다 점진적으로 효율적으로 처리합니다.
Delta Lake 테이블의 스트리밍 읽기 및 쓰기 정확히 한 번의 처리 보장을 통해 Delta Lake 테이블을 스트리밍 원본 및 싱크로 사용합니다.
SQL 및 Spark API SQL 및 Spark API를 사용하여 메시지 버스, 큐, 엔터프라이즈 애플리케이션에 연결하세요.
마이크로 일괄 처리 크기 일관된 일괄 처리 크기를 유지하고 처리 지연을 방지하도록 입력 속도를 제한합니다.

데이터 싱크에 쓰기

구조적 스트리밍이 대상 시스템에 데이터를 제공하는 방법을 구성합니다.

특징 설명
검사점 처리 상태를 저장하여 내결함성을 제공하고 단 한 번의 배달 의미 체계를 실현합니다.
출력 모드 상태 저장 스트리밍 쿼리에 대한 추가, 업데이트 및 전체 모드 중에서 선택합니다.
트리거 간격 처리 요구 사항에 대한 대기 시간과 비용의 균형을 맞추기 위해 트리거 간격을 설정합니다.
구조적 스트리밍의 실시간 모드 종단 간 대기 시간이 5밀리초 이하인 실시간 워크로드에 대한 데이터를 처리합니다.

상태 저장 및 상태 비저장 처리

무상태 쿼리는 상태를 유지하지 않고 행을 처리합니다. 상태 저장 쿼리는 집계, 조인 및 중복 제거에 대한 중간 상태를 유지합니다.

특징 설명
상태 비저장 스트리밍 쿼리 중간 상태를 유지하지 않고 데이터를 처리하는 쿼리를 최적화합니다.
워터 마크 상태 저장 작업에서 Structured Streaming이 늦게 도착하는 데이터를 기다리는 시간을 제어합니다.
상태 저장 스트리밍 상태 저장 연산자를 사용하여 집계, 스트림 스트림 조인 및 중복 제거를 관리합니다.

모니터링 및 관리

쿼리 성능을 추적하고, 최적화를 적용하고, 프로덕션 구조적 스트리밍 워크로드에 대한 데이터 액세스를 제어합니다.

특징 설명
StreamingQueryListener를 사용하여 모니터링 Spark UI 및 수신기 API를 사용하여 쿼리 진행률 및 성능 메트릭을 추적합니다.
튜토리얼: StreamingQueryListener로 쿼리를 모니터링하기 리스너를 연결하고 쿼리 진행 지표를 Unity 카탈로그 테이블에 기록하세요.
Unity 카탈로그를 사용하여 관리 거버넌스 및 액세스 제어를 사용하여 스트리밍 워크로드에 대한 Unity 카탈로그를 구성합니다.