Apache Flink에서 getRuntimeContext()
메서드는 현재 함수가 실행되고 있는 Runtime Context의 정보에 접근할 수 있게 해주는 메서드입니다. 이 메서드는 RichFunction
인터페이스를 구현한 함수들에서 사용할 수 있습니다. 예를 들어, RichMapFunction
, RichFlatMapFunction
, RichFilterFunction
등이 이에 해당합니다.
getRuntimeContext()
메서드를 통해 다음과 같은 정보에 접근할 수 있습니다:
Task Information:
getIndexOfThisSubtask()
: 현재 서브태스크(subtask)의 인덱스를 반환합니다.getNumberOfParallelSubtasks()
: 병렬로 실행되는 서브태스크의 총 수를 반환합니다.
State Management:
getState(T stateDescriptor)
: 상태를 관리할 수 있도록 해주며, 키드-스트림(keyed stream)에서만 사용할 수 있는 상태 관련 함수입니다.getListState(ListStateDescriptor<T> stateDescriptor)
: 리스트 상태에 대한 핸들을 제공합니다.getReducingState(ReducingStateDescriptor<T> stateDescriptor)
: 리듀싱 상태에 대한 핸들을 제공합니다.getAggregatingState(AggregatingStateDescriptor<IN, ACC, OUT> stateDescriptor)
: 집계 상태에 대한 핸들을 제공합니다.
Metrics:
getMetricGroup()
: 메트릭을 측정하고 보고하는 데 사용할 수 있는 메트릭 그룹을 반환합니다.
Distributed Cache:
getDistributedCache()
: Flink의 분산 캐시에 접근할 수 있게 해주는 함수입니다.
Accumulators & Counters:
addAccumulator(String name, Accumulator<?,?> accumulator)
: 집계를 위한 어큐뮬레이터를 등록할 수 있습니다.getAccumulator(String name)
: 등록된 어큐뮬레이터를 가져올 수 있습니다.getIntCounter(String name)
,getLongCounter(String name)
,getDoubleCounter(String name)
: 각각 정수, 긴 정수, 더블 카운터를 가져올 수 있습니다.
Iteration Runtime Context:
getIntCounter(String name)
: 반복 연산에 사용되는 정수 카운터를 가져올 수 있습니다.getIterationRuntimeContext()
: 반복 연산을 위한 런타임 컨텍스트를 가져올 수 있습니다.
이러한 정보와 툴들을 이용하여 Flink 작업을 좀 더 상세하게 관리하고, 상태 관리, 메트릭 측정, 자원 사용 최적화 등을 수행할 수 있습니다. 이 메서드를 통해 애플리케이션의 각 서브태스크가 자신의 실행 환경을 인지하고, 필요한 상태를 유지하며, 효율적으로 데이터를 처리할 수 있습니다.