다음을 통해 공유


Azure Databricks의 일괄 처리 및 스트리밍 데이터 처리

이 문서에서는 수집, 변환 및 실시간 처리를 포함하여 데이터 엔지니어링 워크로드에 사용되는 두 가지 데이터 처리 의미 체계인 일괄 처리와 스트리밍의 주요 차이점을 설명합니다.

스트리밍은 일반적으로 Apache Kafka와 같은 메시지 버스에서 대기 시간이 짧고 지속적인 처리와 연결됩니다.

그러나 Azure Databricks에는 보다 광범위한 정의가 있습니다. Lakeflow 선언적 파이프라인(Apache Spark 및 구조적 스트리밍)의 기본 엔진에는 일괄 처리 및 스트리밍 처리를 위한 통합 아키텍처가 있습니다.

  • 엔진은 효율적인 증분 처리를 위해 클라우드 개체 스토리지Delta Lake 와 같은 원본을 스트리밍 원본으로 처리할 수 있습니다.
  • 스트리밍 처리는 트리거된 방식과 지속적인 방식으로 실행할 수 있으므로 스트리밍 워크로드에 대한 비용 및 성능 절충을 유연하게 제어할 수 있습니다.

다음은 일괄 처리 및 스트리밍을 구분하는 기본 의미 체계 차이점이며, 여기에는 장점과 단점, 워크로드에 대한 선택 고려 사항이 포함됩니다.

배치 의미론

일괄 처리에서는 엔진이 원본에서 이미 처리 중인 데이터를 추적하지 않습니다. 현재 원본에서 사용할 수 있는 모든 데이터는 처리 시 처리됩니다. 실제로 일괄 처리 데이터 원본은 일반적으로 데이터 재처리를 제한하기 위해 일 또는 지역별로 논리적으로 분할됩니다.

예를 들어 전자상거래 회사에서 실행하는 판매 이벤트에 대해 시간 단위로 집계된 평균 항목 판매 가격을 계산하면 매시간 평균 판매 가격을 계산하기 위해 일괄 처리로 예약할 수 있습니다. 일괄 처리를 사용하면 이전 시간의 데이터가 매시간 다시 처리되고, 이전에 계산된 결과는 최신 결과를 반영하도록 덮어씁니다.

일괄 처리

스트리밍 의미 체계

스트리밍 처리를 통해 엔진은 처리 중인 데이터를 추적하고 후속 실행에서 새 데이터만 처리합니다. 위의 예제에서는 일괄 처리 대신 스트리밍 처리를 예약하여 매시간 평균 판매 가격을 계산할 수 있습니다. 스트리밍을 사용하면 마지막 실행 이후 새 데이터만 원본에 추가됩니다. 전체 결과를 확인하려면 이전에 계산된 결과에 새로 계산된 결과를 추가해야 합니다.

스트리밍 처리

일괄 처리 및 스트리밍

위의 예제에서 스트리밍은 이전 실행에서 처리된 동일한 데이터를 처리하지 않으므로 일괄 처리보다 낫습니다. 그러나 원본의 잘못된 순서 및 지연 도착 데이터와 같은 시나리오에서는 스트리밍 처리가 더 복잡해집니다.

지연 도착 데이터의 예는 첫 번째 시간의 일부 판매 데이터가 두 번째 시간까지 원본에 도착하지 않는 경우입니다.

  • 일괄 처리에서 첫 번째 시간의 지연 도착 데이터는 두 번째 시간의 데이터와 첫 번째 시간의 기존 데이터로 처리됩니다. 첫 번째 시간의 이전 결과를 덮어쓰고 지연 도착 데이터로 수정합니다.
  • 스트리밍 처리에서 첫 번째 시간에 늦게 도착하는 데이터는 먼저 처리된 첫 번째 시간의 다른 데이터와는 별도로 처리됩니다. 처리 논리는 이전 결과를 올바르게 업데이트하려면 첫 번째 시간의 평균 계산에서 합계 및 개수 정보를 저장해야 합니다.

일반적으로 이러한 스트리밍 복잡성은 조인, 집계중복 제거와 같이 처리가 상태 저장일 때 발생합니다.

상태 없는 스트리밍 처리의 경우, 원본에서 데이터를 추가할 때 잘못된 순서의 데이터와 지연 도착 데이터를 처리하는 것이 덜 복잡합니다. 이는 지연 도착 데이터를 이전 결과에 추가할 수 있기 때문입니다.

아래 표에서는 일괄 처리 및 스트리밍 처리의 장단점과 Databricks Lakeflow에서 이러한 두 처리 의미 체계를 지원하는 다양한 제품 기능을 간략하게 설명합니다.

묶음 스트리밍
장점
  • 논리 처리는 간단합니다.
  • 결과는 항상 정확하며 원본에서 사용 가능한 모든 데이터를 반영합니다.
  • 새 데이터만 효율적으로 처리됩니다.
  • 더 빠르게 시간에서 분, 초 및 밀리초까지 대기 시간 요구 사항을 처리할 수 있습니다.
단점
  • 효율적이지 않습니다. 데이터는 특정 일괄 처리 파티션에서 다시 처리됩니다.
  • 속도가 느리면 대기 시간 요구 사항을 몇 시간에서 분으로 처리할 수 있지만 초 또는 밀리초는 처리할 수 없습니다.
  • 처리 논리는 특히 조인, 집계, 중복 제거 등의 상태 저장 처리에 복잡할 수 있습니다.
  • 잘못된 순서 및 지연 도착 데이터를 고려할 때 결과가 항상 정확할 수 있는 것은 아닙니다.
데이터 엔지니어링 제품

권장 사항

아래 표에서는 medallion 아키텍처의 각 계층에서 데이터 처리 워크로드의 특성에 따라 권장되는 처리 의미 체계를 간략하게 설명합니다.

메달리언 계층 워크로드 특성 추천
청동
  • 수집 작업 부하.
  • 일반적으로 데이터 원본에서 증분 추가를 위한 무상태 처리를 포함하지 않습니다.
  • 데이터 크기는 일반적으로 더 큽다.
  • 스트리밍 처리는 일반적으로 더 나은 선택입니다. 사용자가 스트리밍의 장점을 활용할 수 있지만 상태 저장 스트리밍 처리의 복잡성에 노출되지 않을 수 있습니다.
  • 변환 작업량.
  • 일반적으로 상태 비 저장 처리는 필터링과 같이 포함되고, 상태 저장 처리는 조인, 집계 및 중복 제거와 같이 수행됩니다.
  • 상태 저장 스트리밍 처리의 복잡성을 방지하려면 일괄 처리(구체화된 뷰에서 증분 새로 고침 포함)를 사용합니다.
  • 효율성과 대기 시간이 결과 정확도보다 훨씬 중요한 사용 사례에 대한 옵션으로 스트리밍 처리를 사용합니다. 상태 저장 스트리밍 처리에서 발생하는 복잡성을 염두에 두어야 합니다.
  • 마지막 마일 집계 워크로드.
  • 일반적으로 조인 및 집계와 같은 상태 저장 처리가 포함됩니다.
  • 데이터 크기는 일반적으로 더 작습니다.
  • 상태 저장 스트리밍 처리의 복잡성을 방지하려면 일괄 처리(구체화된 뷰에서 증분 새로 고침 포함)를 사용합니다.