다음을 통해 공유


트리거된 파이프라인 모드와 연속 파이프라인 모드 비교

이 문서에서는 Delta Live Tables의 트리거 및 연속 파이프라인 모드의 실행 시맨틱을 설명합니다.

파이프라인 모드는 계산되는 table 유형과 독립적입니다. 구체화된 views 및 스트리밍 tables 둘 다 파이프라인 모드에서 업데이트할 수 있습니다.

트리거와 연속 간에 변경하려면 파이프라인을 만들거나 편집하는 동안 파이프라인 설정에서 파이프라인 모드 옵션을 사용합니다. Delta Live Tables 파이프라인을 구성하는 방법을 참조하세요.

참고 항목

Databricks SQL에 정의된 구체화된 views 및 스트리밍 tables 대한 Refresh 작업은 항상 트리거된 파이프라인 모드를 사용하여 실행됩니다.

트리거된 파이프라인 모드란?

파이프라인이 로 트리거된 모드를 사용하는 경우, 시스템은 모든 tables나 선택된 tables을 성공적으로 새로 고친 후 처리를 중지합니다. 이렇게 하면 update이 시작할 때 이용 가능한 데이터를 바탕으로 update의 각 table가 새로 고쳐지도록 보장합니다.

연속 파이프라인 모드란?

파이프라인이 연속 실행을 사용하는 경우 Delta Live Tables 새 데이터를 데이터 원본에 도착할 때 처리하여 파이프라인 전체에서 tables 최신 상태로 유지합니다.

연속 실행 모드에서 불필요한 처리를 방지하기 위해 파이프라인은 종속 델타 tables 자동으로 모니터링하고 해당 종속 tables 내용이 변경된 경우에만 update 수행합니다.

데이터 파이프라인 모드 선택

다음 table는 트리거된 파이프라인 모드와 연속 파이프라인 모드 간의 차이점을 보여줍니다.

주요 질문 트리거됨 연속
update 언제 중지되나요? 완료 시 자동으로 진행됨. 수동으로 중지될 때까지 계속 실행됩니다.
어떤 데이터가 처리됩니까? update 시작 시 데이터가 제공됩니다. 구성된 원본에 도착하는 모든 데이터입니다.
가장 적합한 데이터 새로 고침 요구 사항은 무엇인가요? 데이터 업데이트는 매 시간, 매일, 또는 매 10분마다 실행됩니다. 데이터 업데이트는 10초에서 몇 분 간격으로 수행됩니다.

트리거된 파이프라인은 클러스터가 update 동안만 파이프라인을 실행하므로 리소스 사용량과 비용을 줄일 수 있습니다. 그러나 파이프라인이 트리거될 때까지 새 데이터가 처리되지 않습니다. 연속 파이프라인에는 항상 실행되는 클러스터가 필요하며, 이는 더 비싸지만 처리 대기 시간을 줄입니다.

연속 파이프라인에 대한 트리거 간격 Set

연속 모드에 대한 파이프라인을 구성할 때 트리거 간격을 set 파이프라인이 각 흐름에 대한 update 시작하는 빈도를 제어할 수 있습니다.

pipelines.trigger.interval 사용하여 table 또는 전체 파이프라인을 업데이트하는 흐름에 대한 트리거 간격을 제어할 수 있습니다. 트리거된 파이프라인은 각 table 한 번 처리하므로 pipelines.trigger.interval 연속 파이프라인에서만 사용됩니다.

Databricks는 스트리밍 및 일괄 처리 쿼리의 기본값이 다르기 때문에 개별 tables에서 pipelines.trigger.interval을 설정하는 것이 좋습니다. 파이프라인 그래프 전체에 대한 업데이트를 제어해야 하는 경우에만 파이프라인의 값을 Set하십시오.

Python에서 spark_conf 또는 SQL에서 SET를 사용하여 table에서 setpipelines.trigger.interval하십시오.

@dlt.table(
  spark_conf={"pipelines.trigger.interval" : "10 seconds"}
)
def <function-name>():
    return (<query>)
SET pipelines.trigger.interval=10 seconds;

CREATE OR REFRESH MATERIALIZED VIEW TABLE_NAME
AS SELECT ...

파이프라인의 setpipelines.trigger.interval을 파이프라인 설정의 configuration 개체에 추가하세요.

{
  "configuration": {
    "pipelines.trigger.interval": "10 seconds"
  }
}