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 카탈로그를 구성합니다. |