구조적 스트리밍 트리거 간격 구성

Apache Spark 구조적 스트리밍은 데이터를 증분 방식으로 처리합니다. 일괄 처리에 대한 트리거 간격을 제어하면 거의 실시간으로 처리하거나, 5분마다 또는 시간당 한 번씩 데이터베이스를 새로 고치거나, 하루 또는 일주일 동안 모든 새 데이터를 일괄 처리하도록 워크로드에 구조적 스트리밍을 사용할 수 있습니다.

Databricks 자동 로더는 구조적 스트리밍을 사용하여 데이터를 로드하기 때문에 트리거가 작동하는 방식을 이해하면 원하는 빈도로 데이터를 수집하면서 비용을 제어할 수 있는 가장 큰 유연성을 제공합니다.

시간 기반 트리거 간격 지정

구조적 스트리밍은 시간 기반 트리거 간격을 "고정 간격 마이크로 일괄 처리"라고 합니다. processingTime 키워드를 사용하여 기간(예: .trigger(processingTime='10 seconds'))을 문자열로 지정합니다.

trigger 간격을 너무 작게(수십 초 이하) 지정하면 시스템에서 새 데이터가 도착했는지 확인하기 위해 불필요한 검사를 수행할 수 있습니다. 대기 시간 요구 사항과 데이터가 원본에 도착하는 속도의 균형을 맞추도록 처리 시간을 구성합니다.

증분 일괄 처리 구성

Important

Databricks Runtime 11.3 LTS 이상 Trigger.Once 에서는 이 설정이 더 이상 사용되지 않습니다. Databricks는 모든 증분 일괄 처리 워크로드에 사용하는 Trigger.AvailableNow 것이 좋습니다.

사용 가능한 지금 트리거 옵션은 사용 가능한 모든 레코드를 증분 일괄 처리로 사용하며, 이러한 옵션을 maxBytesPerTrigger 사용하여 일괄 처리 크기를 구성할 수 있습니다(크기 조정 옵션은 데이터 원본에 따라 다름).

Azure Databricks는 여러 구조적 스트리밍 원본에서 증분 일괄 처리를 위한 사용을 Trigger.AvailableNow 지원합니다. 다음 표에는 각 데이터 원본에 필요한 최소 지원되는 Databricks 런타임 버전이 포함되어 있습니다.

원본 최소 Databricks 런타임 버전
파일 원본(JSON, Parquet 등) 9.1 LTS
Delta Lake 10.4 LTS
자동 로더 10.4 LTS
Apache Kafka 10.4 LTS
Kinesis 13.1

기본 트리거 간격은 무엇인가요?

구조적 스트리밍은 기본적으로 500ms의 고정 간격 마이크로 일괄 처리로 설정됩니다. Databricks는 새 데이터가 도착했는지 확인하고 크기가 작은 일괄 처리를 처리하는 것과 관련된 비용을 최소화하기 위해 항상 맞춤형 trigger를 지정하는 것을 권장합니다.

실행 간의 트리거 간격 변경

동일한 검사포인트를 사용하는 동안 실행 간에 트리거 간격을 변경할 수 있습니다.

마이크로 일괄 처리가 처리되는 동안 구조적 스트리밍 작업이 중지되는 경우 새 트리거 간격이 적용되기 전에 해당 마이크로 일괄 처리가 완료되어야 합니다. 따라서 트리거 간격을 변경한 후 이전에 지정한 설정을 사용하여 마이크로 일괄 처리 처리를 관찰할 수 있습니다.

시간 기반 간격에서 사용 AvailableNow으로 이동하는 경우 사용 가능한 모든 레코드를 증분 일괄 처리로 처리하기 전에 마이크로 일괄 처리 처리가 발생할 수 있습니다.

시간 기반 간격으로 AvailableNow 이동하는 경우 마지막 AvailableNow 작업이 트리거될 때 사용 가능한 모든 레코드를 계속 처리할 수 있습니다. 이는 예상되는 동작입니다.

참고 항목

증분 일괄 처리와 관련된 쿼리 실패에서 복구하려는 경우 일괄 처리를 완료해야 하므로 트리거 간격을 변경해도 이 문제가 해결되지 않습니다. Databricks는 일괄 처리를 처리하는 데 사용되는 컴퓨팅 용량을 확장하여 문제를 해결하는 것이 좋습니다. 드물게 새 검사포인트를 사용하여 스트림을 다시 시작해야 할 수 있습니다.

연속 처리 모드란?

Apache Spark는 연속 처리라는 추가 트리거 간격을 지원합니다. 이 모드는 Spark 2.3 이후 실험적 모드로 분류되었습니다. 이 처리 모델의 장단 부분을 이해하려면 Azure Databricks 계정 팀과 상의하세요.

이 연속 처리 모드는 Delta Live Tables에 적용되는 연속 처리와 전혀 관련이 없습니다.