Cloud Dataflow SDK에서 미리 작성된 변환

Dataflow SDK는 일반적이고 유용한 데이터 처리 작업을 나타내는 미리 작성된 변환 라이브러리를 제공합니다. 이러한 변환은 이미 사용자를 위해 작성된 일반 처리 함수가 포함된 핵심 변환이거나 미리 작성된 단순 변환을 결합하여 유용한 처리 함수를 수행하는 복합 변환입니다.

자바

자바용 Dataflow SDK에서는 이러한 변환을 com.google.cloud.dataflow.sdk.transforms 패키지에서 찾을 수 있습니다.

Dataflow SDK에 미리 작성된 변환은 사용자의 파이프라인에서 사용할 수 있습니다. 이러한 변환은 컬렉션의 요소 계산, 컬렉션을 분위로 분할, 컬렉션에서 상위(또는 하위) N개 요소 탐색, 숫자 데이터에서 기본적인 수학 조합 수행 등 기본적인 처리 단계를 수행할 수 있는 일반적이고 간편한 작업입니다.

Dataflow SDK의 미리 작성된 변환은 대부분 다른 데이터 유형을 사용할 수 있는 일반화된 복합 변환으로 ParDo, GroupByKey, Combine과 같은 중첩된 핵심 변환으로 구성됩니다.

자바

자바용 Dataflow SDK는 핵심 변환을 사용하는 가장 일반적인 데이터 처리 작업을 나타낼 수 있습니다. SDK에서 제공된 사전 작성된 변환은 요소를 계산하거나 기본적인 수학 조합을 수행하는 방식으로 구성된 일반 ParDo, Combine 등의 변환을 위해 사전 작성된 래퍼입니다. 예를 들어, Sum.integersGloballyCombine.Globally 핵심 변환을 Integer 유형으로 래핑하고 모든 입력 요소의 합을 계산하는 사전 작성된 CombineFn을 제공합니다. Combine.Globally의 자체 버전을 CombineFn의 합계로 작성하는 대신 SDK에서 제공하는 사전 빌드된 변환을 사용할 수 있습니다.

Dataflow SDK에 포함된 변환이 파이프라인의 사용 사례에 맞지 않을 경우 재사용 가능한 일반적인 복합 변환을 자체적으로 생성할 수 있습니다. 포함된 변환의 소스 코드는 ParDo, Combine, 그리고 기타 핵심 변환을 통해 자체적인 복합 변환을 만드는 모델로 사용할 수 있습니다. 자세한 내용은 복합 변환 생성을 참조하세요.

일반 처리 패턴

Dataflow SDK에 포함된 변환은 파이프라인에서 일반 데이터 처리 작업을 수행하는 편리한 메커니즘을 제공합니다. 이러한 변환의 소스 코드는 다양한 작업에서 ParDo와 같은 핵심 변환을 사용(또는 재사용)할 수 있는 방법을 보여줍니다.

단순 ParDo 래퍼

Dataflow SDK에서 제공하는 가장 단순한 변환 중에는 키-값 쌍을 처리하는 유틸리티 변환이 있습니다. 키-값 쌍 PCollection을 입력하면 Keys 변환은 키만을 포함하는 PCollection을 반환하고 Values 변환은 값만을 포함하는 PCollection을 반환합니다. KvSwap 변환은 키-값 쌍의 키 요소와 값 요소를 서로 바꾼 다음 바뀐 쌍의 PCollection을 반환합니다.

자바

Keys, Values, KvSwap, MapElements, FlatMapElements, Filter, Partition은 단일 ParDo로 구성된 단순 변환입니다. 각각의 경우에서 ParDo는 비교적 단순한 DoFn을 호출하여 PCollection 출력의 요소를 생성합니다.

Keys 변환의 apply 메소드는 다음과 같습니다. 이 메소드는 KV<K, V> 요소의 일반 PCollection을 허용하고 키/값 쌍에서 키의 PCollection<K>만 반환합니다.

  @Override
  public PCollection<K> apply(PCollection<? extends KV<K, ?>> in) {
    return
        in.apply(ParDo.named("Keys")
                 .of(new DoFn<KV<K, ?>, K>() {
                     @Override
                     public void processElement(ProcessContext c) {
                       c.output(c.element().getKey());
                     }
                    }));
  }

이 예시에서 apply 메소드는 입력 컬렉션(in)에 ParDo 변환을 적용합니다. 이 ParDo는 단순 DoFn을 통해 키-값 쌍의 키 부분만을 출력합니다. DoFn은 간단하며 익명 내부 클래스 인스턴스로 정의할 수 있습니다.

요소를 결합하는 패턴

Dataflow SDK에는 요소에 대한 일반적인 통계 및 수학 조합을 수행하는 편리한 변환이 포함되어 있습니다. 예를 들자면 정수 등의 숫자 데이터에서 PCollection을 허용하고 모든 요소의 합계, 모든 요소의 평균, 컬렉션 내 모든 요소의 최댓값/최솟값 등을 찾는 수학 조합을 수행하는 변환이 있습니다. 이러한 종류의 변환의 예시로는 SumMean이 있습니다.

그 외 변환은 컬렉션에서 상위 N개 요소 찾기, 지정된 PCollection에서 매 N번째 요소까지의 무작위 샘플 반환 등의 기본 통계 분석을 수행합니다. 이러한 종류의 변환의 예시로는 TopSample이 있습니다.

자바

이러한 변환은 Combine 핵심 변환을 기반으로 하며 여기에는 Combine.globally를 통해 개별 값의 PCollection에서 사용되는 변수와 Combine.perKey를 통해 키-값 쌍의 PCollection에서 사용되는 변수가 포함됩니다.

전역 변수와 키별 변수 변환을 결합하는 예제는 Top 변환에 관한 자바 참고 문서의 소스 및 API를 참조하세요.

매핑/셔플/축소 스타일 처리

Dataflow SDK에 포함된 변환 중에는 매핑/셔플/축소 스타일 알고리즘과 비슷한 처리를 수행하는 변환이 포함되어 있습니다. 이러한 변환 중 하나는 요소의 잠재적 비고유 컬렉션을 허용하고 고유 요소가 각 요소의 일치 항목 수와 페어링되어 축소된 컬렉션을 반환하는 Count가 있습니다. 마찬가지로 RemoveDuplicates 변환은 비고유 컬렉션을 고유 요소로 축소하지만 일치 항목 수는 제공하지 않습니다.

자바

이러한 변환은 핵심 변환 ParDoCombine.perKey를 활용합니다. Combine.perKey는 그 자체로 GroupByKey를 수행하고 각 키의 결과 값 스트림을 단일 값으로 결합하는 복합 작업입니다. ParDo는 매핑/셔플/축소의 매핑 단계를 나타내고, Combine.perKey는 셔플과 축소 단계를 나타냅니다.

Count 변환의 apply 메소드는 다음과 같습니다. 이 메소드는 중첩된 ParDoCombine.perKey 변환의 처리 논리를 보여줍니다.

  @Override
  public PCollection<KV<T, Long>> apply(PCollection<T> in) {
    return
        in
        .apply(ParDo.named("Init")
               .of(new DoFn<T, KV<T, Long>>() {
                   @Override
                   public void processElement(ProcessContext c) {
                     c.output(KV.of(c.element(), 1L));
                   }
                 }))

        .apply(Combine.<T, Long>perKey(
                 new SerializableFunction<Iterable<Long>, Long>() {
                   @Override
                   public Long apply(Iterable<Long> values) {
                     long sum = 0;
                     for (Long value : values) {
                       sum += value;
                     }
                     return sum;
                   }
                 }));
  }

이 예시에서 apply 메소드는 ParDo 변환을 사용해 입력 PCollection의 각 요소에 일치 항목 수를 연결하고 각 요소의 키-값 쌍을 생성합니다. 이 과정은 매핑/셔플/축소의 매핑 단계입니다. 그런 다음 CountCombine.perKey 변환을 적용하여 셔플 및 축소 논리를 수행하고 결합된 일치 항목 수와 고유 요소의 PCollection을 생성합니다.

이 페이지가 도움이 되었나요? 평가를 부탁드립니다.

다음에 대한 의견 보내기...

도움이 필요하시나요? 지원 페이지를 방문하세요.