본문 바로가기

카테고리 없음

Flink(플링크) mayBy

maxBy는 Apache Flink의 DataStream API 내에 있는 함수로, 특정 필드에 대해 최대 값을 가진 아이템을 선택하는데 사용됩니다. Flink는 실시간 스트림 처리를 위한 오픈 소스 플랫폼으로, 대용량 데이터 스트림을 처리하는데 적합합니다.

maxBy 함수는 필드의 최댓값을 유지하면서 해당 필드를 기준으로 데이터 스트림 내의 요소를 추적합니다. 예를 들어, 어떤 데이터 스트림이 여러 사용자의 클릭 이벤트를 포함하고 있고, 각 이벤트에는 사용자 ID와 클릭 수가 포함되어 있다면, maxBy 함수를 사용하여 가장 많은 클릭을 한 사용자의 이벤트를 식별할 수 있습니다.

아래는 maxBy 함수를 사용하는 간단한 예시입니다:

DataStream<Tuple2<Long, Integer>> inputStream = // ... 데이터 스트림 소스

// 필드 1 (인덱스는 0부터 시작) 에 대해 최댓값을 가진 요소를 선택
DataStream<Tuple2<Long, Integer>> maxByStream = inputStream
    .keyBy(0) // 튜플의 첫 번째 요소로 키를 설정 (예: 사용자 ID)
    .maxBy(1); // 튜플의 두 번째 요소로 최댓값을 찾음 (예: 클릭 수)

maxByStream.print();

이 예시에서 keyBy(0)는 데이터 스트림을 첫 번째 필드 (예: 사용자 ID) 기준으로 그룹화합니다. 그런 다음 maxBy(1)는 두 번째 필드 (예: 클릭 수)의 최대 값을 계속 추적합니다. 이 때, 같은 키를 가진 요소들 중에서 최대 값을 가진 요소만 출력됩니다.

maxBy 함수에는 두 가지 중요한 변형이 있습니다:

  • maxBy: 해당 필드의 최대 값을 가지면서 가장 최근의 요소를 반환합니다.
  • max: 해당 필드의 최대 값을 가진 첫 번째 요소를 반환합니다.

maxBymax의 주요 차이점은 동일한 최대 값을 가진 요소가 여러 개 있을 경우, maxBy는 가장 최근에 업데이트된 요소를 반환하는 반면, max는 처음 발견된 요소를 반환한다는 것입니다.

Flink 버전이나 환경에 따라 사용법에 약간의 차이가 있을 수 있으니, 자세한 구현 방법은 공식 문서나 해당 버전의 API 가이드를 참조하세요.