2016-06-21 7 views
0

데이터 흐름을 시작하기 만하고 분기를 달성하는 방법에 대해 몇 가지 질문이 있습니다.데이터 브랜칭 및 변환 적용

내가 단어의 흐름을 가지고 있다고 말하면 각 알파벳으로 시작하는 모든 단어를 필터링하고 싶다면 어떻게 할 수 있습니까? 각 데이터에 필터를 적용하고이를 PCollection에 할당해야합니까? 그렇다면 각 필터에 대해 유용한 데이터가 아닌 전체 데이터 스트림을 읽고 26 개의 PCollection을 만들어 각 알파벳으로 시작하는 글자를 만들어야합니다. 동일한 데이터를 반복하지 않고도 더 좋은 방법이 있을까요?

또한 일부 알파벳에 대해 윈도우 처리를 적용하고 나머지는 직접 스트리밍하고 싶습니다. 어떻게해야합니까?

감사합니다.

답변

1

Partition 변환을 사용하면 데이터를 여러 번 반복하지 않고도 여러 개의 하위 PCollections로 데이터를 분할 할 수 있습니다. 그런 다음 다른 변형을 적용하고 분할 영역의 다른 출력에 개별적으로 창을 적용 할 수 있습니다. 예를 들어

: 빠른 응답

PCollection<Student> students = ...; 
// Split students up into 10 partitions, by percentile: 
PCollectionList<Student> studentsByPercentile = 
    students.apply(Partition.of(10, new PartitionFn<Student>() { 
     public int partitionFor(Student student, int numPartitions) { 
      return student.getPercentile() // 0..99 
       * numPartitions/100; 
     }})) 
for (int i = 0; i < 10; i++) { 
    PCollection<Student> partition = studentsByPercentile.get(i); 
    ... 
} 
+0

감사합니다. 몇 가지 샘플 프로그램이 있으면 좋을 것입니다. – Neoster

+0

예가 추가되었습니다. – danielm