다음을 통해 공유


스트리밍 및 증분 수집

Azure Databricks는 Apache Spark 구조적 스트리밍을 사용하여 다음을 포함하여 수집 워크로드와 관련된 수많은 제품을 백업합니다.

  • 자동 로더
  • COPY INTO
  • Delta Live Tables 파이프라인
  • Databricks SQL의 구체화된 뷰 및 스트리밍 테이블

이 문서에서는 스트리밍 및 증분 일괄 처리 의미 체계 간의 몇 가지 차이점을 설명하고 Databricks에서 원하는 의미 체계에 대한 수집 워크로드를 구성하는 대략적인 개요를 제공합니다.

스트리밍 및 증분 일괄 처리 수집의 차이점은 무엇인가요?

가능한 수집 워크플로 구성은 거의 실시간 처리에서 드문 증분 일괄 처리에 이르기까지 다양합니다. 두 패턴 모두 Apache Spark 구조적 스트리밍을 사용하여 증분 처리를 지원하지만 의미 체계는 다릅니다. 간단히 하기 위해 이 문서에서는 거의 실시간 수집을 스트리밍 수집으로, 더 드물게 증분 처리를 증분 일괄 처리 수집이라고 합니다.

스트리밍 수집

데이터 수집 및 테이블 업데이트의 컨텍스트에서 스트리밍은 Azure Databricks가 상시 기반 인프라를 사용하여 소스에서 싱크로 레코드를 수집하는 거의 실시간 데이터 처리를 나타냅니다. 스트리밍 워크로드는 수집을 중지하는 오류가 발생하지 않는 한 구성된 데이터 원본에서 업데이트를 지속적으로 수집합니다.

증분 일괄 처리 수집

증분 일괄 처리 수집은 수명이 짧은 작업의 데이터 원본에서 모든 새 레코드가 처리되는 패턴을 나타냅니다. 증분 일괄 처리 수집은 일정에 따라 자주 발생하지만 수동으로 또는 파일 도착에 따라 트리거될 수도 있습니다.

증분 일괄 처리 수집 은 데이터 원본에서 새 레코드를 자동으로 검색하고 이미 수집된 레코드를 무시한다는 점에서 일괄 처리 수집과 다릅니다.

작업을 사용하여 수집

Databricks 작업을 사용하면 워크플로를 오케스트레이션하고 Notebook, 라이브러리, Delta Live Tables 파이프라인 및 Databricks SQL 쿼리를 포함하는 작업을 예약할 수 있습니다.

참고 항목

모든 Azure Databricks 컴퓨팅 형식 및 작업 유형을 사용하여 증분 일괄 처리 수집을 구성할 수 있습니다. 스트리밍 수집은 클래식 작업 컴퓨팅 및 델타 라이브 테이블의 프로덕션에서만 지원됩니다.

작업에는 두 가지 기본 작업 모드가 있습니다.

  • 연속 작업은 오류가 발생하면 자동으로 다시 시도합니다. 이 모드는 스트리밍 수집을 위한 것입니다.
  • 트리거된 작업은 트리거될 때 작업을 실행합니다. 트리거는 다음과 같습니다.
    • 지정된 일정에 따라 작업을 실행하는 시간 기반 트리거입니다.
    • 파일이 지정된 위치에 배치될 때 작업을 실행하는 파일 기반 트리거입니다.
    • REST API 호출, Azure Databricks CLI 명령 실행 또는 작업 영역 UI에서 지금 실행 단추를 클릭하는 등의 다른 트리거입니다.

증분 일괄 처리 워크로드의 경우 다음과 같이 트리거 모드를 AvailableNow 사용하여 작업을 구성합니다.

Python

(df.writeStream
  .option("checkpointLocation", <checkpoint-path>)
  .trigger(availableNow=True)
  .toTable("table_name")
)

Scala

import org.apache.spark.sql.streaming.Trigger

df.writeStream
  .option("checkpointLocation", <checkpoint-path>)
  .trigger(Trigger.AvailableNow)
  .toTable("table_name")

스트리밍 워크로드의 경우 기본 트리거 간격은 .입니다 processingTime ="500ms". 다음 예제에서는 5초마다 마이크로 일괄 처리를 처리하는 방법을 보여줍니다.

Python

(df.writeStream
  .option("checkpointLocation", <checkpoint-path>)
  .trigger(processingTime="5 seconds")
  .toTable("table_name")
)

Scala

import org.apache.spark.sql.streaming.Trigger

df.writeStream
  .option("checkpointLocation", <checkpoint-path>)
  .trigger(Trigger.ProcessingTime, "5 seconds")
  .toTable("table_name")

Important

서버리스 작업은 구조적 스트리밍에 대한 Scala, 연속 모드 또는 시간 기반 트리거 간격을 지원하지 않습니다. 거의 실시간 수집 의미 체계가 필요한 경우 클래식 작업을 사용합니다.

델타 라이브 테이블을 사용하여 수집

작업과 마찬가지로 Delta Live Tables 파이프라인은 트리거되거나 연속 모드로 실행될 수 있습니다. 스트리밍 테이블을 사용하는 거의 실시간 스트리밍 의미 체계의 경우 연속 모드를 사용합니다.

스트리밍 테이블을 사용하여 클라우드 개체 스토리지, Apache Kafka, Amazon Kinesis, Google Pub/Sub 또는 Apache Pulsar에서 스트리밍 또는 증분 일괄 수집을 구성합니다.

LakeFlow Connect는 Delta Live Tables를 사용하여 연결된 시스템에서 수집 파이프라인을 구성합니다. LakeFlow Connect를 참조하세요.

구체화된 뷰는 일괄 처리 워크로드에 해당하는 작업 의미 체계를 보장하지만 많은 작업을 최적화하여 결과를 증분 방식으로 계산할 수 있습니다. 구체화된 뷰증분 새로 고침을 참조하세요.

Databricks SQL을 사용하여 수집

스트리밍 테이블을 사용하여 클라우드 개체 스토리지, Apache Kafka, Amazon Kinesis, Google Pub/Sub 또는 Apache Pulsar에서 증분 일괄 처리 수집을 구성할 수 있습니다.

구체화된 뷰를 사용해서 델타 소스에서 증분식 배치 처리를 설정할 수 있습니다. 구체화된 뷰증분 새로 고침을 참조하세요.

COPY INTO 는 클라우드 개체 스토리지의 데이터 파일에 대한 증분 일괄 처리를 위한 친숙한 SQL 구문을 제공합니다. COPY INTO 동작은 클라우드 개체 스토리지에 대한 스트리밍 테이블에서 지원하는 패턴과 유사하지만 모든 기본 설정이 지원되는 모든 파일 형식에 해당하는 것은 아닙니다.