본문 바로가기

카테고리 없음

Flink(플링크) getRuntimeContext

Apache Flink에서 getRuntimeContext() 메서드는 현재 함수가 실행되고 있는 Runtime Context의 정보에 접근할 수 있게 해주는 메서드입니다. 이 메서드는 RichFunction 인터페이스를 구현한 함수들에서 사용할 수 있습니다. 예를 들어, RichMapFunction, RichFlatMapFunction, RichFilterFunction 등이 이에 해당합니다.

getRuntimeContext() 메서드를 통해 다음과 같은 정보에 접근할 수 있습니다:

  1. Task Information:

    • getIndexOfThisSubtask(): 현재 서브태스크(subtask)의 인덱스를 반환합니다.
    • getNumberOfParallelSubtasks(): 병렬로 실행되는 서브태스크의 총 수를 반환합니다.
  2. State Management:

    • getState(T stateDescriptor): 상태를 관리할 수 있도록 해주며, 키드-스트림(keyed stream)에서만 사용할 수 있는 상태 관련 함수입니다.
    • getListState(ListStateDescriptor<T> stateDescriptor): 리스트 상태에 대한 핸들을 제공합니다.
    • getReducingState(ReducingStateDescriptor<T> stateDescriptor): 리듀싱 상태에 대한 핸들을 제공합니다.
    • getAggregatingState(AggregatingStateDescriptor<IN, ACC, OUT> stateDescriptor): 집계 상태에 대한 핸들을 제공합니다.
  3. Metrics:

    • getMetricGroup(): 메트릭을 측정하고 보고하는 데 사용할 수 있는 메트릭 그룹을 반환합니다.
  4. Distributed Cache:

    • getDistributedCache(): Flink의 분산 캐시에 접근할 수 있게 해주는 함수입니다.
  5. Accumulators & Counters:

    • addAccumulator(String name, Accumulator<?,?> accumulator): 집계를 위한 어큐뮬레이터를 등록할 수 있습니다.
    • getAccumulator(String name): 등록된 어큐뮬레이터를 가져올 수 있습니다.
    • getIntCounter(String name), getLongCounter(String name), getDoubleCounter(String name): 각각 정수, 긴 정수, 더블 카운터를 가져올 수 있습니다.
  6. Iteration Runtime Context:

    • getIntCounter(String name): 반복 연산에 사용되는 정수 카운터를 가져올 수 있습니다.
    • getIterationRuntimeContext(): 반복 연산을 위한 런타임 컨텍스트를 가져올 수 있습니다.

이러한 정보와 툴들을 이용하여 Flink 작업을 좀 더 상세하게 관리하고, 상태 관리, 메트릭 측정, 자원 사용 최적화 등을 수행할 수 있습니다. 이 메서드를 통해 애플리케이션의 각 서브태스크가 자신의 실행 환경을 인지하고, 필요한 상태를 유지하며, 효율적으로 데이터를 처리할 수 있습니다.