수집 스케줄러 참조

데이터베이스 오브젝트 및 프로시저

다음 프로시저는 scheduler/scheduler.sql 파일에 의해 생성됩니다.

PUBLIC.CREATE_SCHEDULER()

이 프로시저는 SQL과 Java 사이에서 진입점의 역할을 합니다. 그리고 APP_STATE 테이블에서 사용 가능한 일정에 따라 실행되는 작업을 생성합니다. 이 작업을 실행하면 아래 PUBLIC.RUN_SCHEDULER_ITERATION() 프로시저가 실행됩니다.

PUBLIC.RUN_SCHEDULER_ITERATION()

이 프로시저는 실제 스케줄링 작업을 Java로 구현하는 진입점입니다. 그리고 스케줄러 작업이 실행될 때마다 호출됩니다.

PUBLIC.ON_INGESTION_SCHEDULED (process_id VARCHAR)

이 프로시저는 스케줄러가 실행을 위해 가져온 단일 프로세스에 대한 수집 흐름을 정의합니다. 기본 구현은 아무것도 수행하지 않습니다. Snowflake는 Java에서 OnIngestionScheduledCallback 인터페이스를 사용하여 구현하는 것을 권장합니다.

사용자 지정 핸들러

수집 스케줄러 기능은 SQL에서 Java로의 진입점 역할을 하는 두 개의 서로 다른 핸들러로 구성됩니다.

  • CreateSchedulerHandler

  • RunSchedulerIterationHandler

후자만 사용자 지정하는 것이 좋습니다.

빌더 접근법

RunSchedulerIterationHandlerRunSchedulerIterationHandlerBuilder 를 사용하여 사용자 지정할 수 있습니다. 이 도우미 오브젝트를 사용하면 기본 인터페이스의 사용자 지정 구현이 가능합니다.

  • ConnectorErrorHelper

  • OnIngestionScheduledCallback

제공되지 않는 경우에는 기본 구현이 사용됩니다.

class CustomOnIngestionScheduledCallback implements OnIngestionScheduledCallback {
    @Override
    public void onIngestionScheduled(String processId) {
        // CUSTOM LOGIC
    }
}

class CustomHandler {

    // Path to this method needs to be specified in the PUBLIC.RUN_SCHEDULER_ITERATION procedure using SQL
    public static Variant runIteration(Session session) {
        return RunSchedulerIterationHandler.builder(session)
            .withOnIngestionScheduledCallback(new CustomOnIngestionScheduledCallback())
            .build()
            .runIteration()
            .toVariant();
    }
}
Copy