apache beam groupby shuffle randomness quality?

时间:2018-03-27 23:32:34

标签: apache google-cloud-platform google-cloud-storage google-cloud-dataflow apache-beam

在我的apache beam管道中,我读取了太字节的日志事件。这些事件通常是在gcs桶中订购到分层时间桶。我使用textIO或avroIO readALL和readALLgenericRecords api将它们全部读入pcollection。

PCollection<KV<String, GenericRecord>> collection1 = p.apply(Create.of(files...))
   .apply(AvroIO.readAllGenericRecords(schema)).apply(..extract request ID)

PCollection<KV<String, GenericRecord>> collection2 = p.apply(Create.of(files_2...))
   .apply(AvroIO.readAllGenericRecords(schema)).apply(..extract request ID)

PCollection<KV<String, KV<GenericRecord, GenericRecord>>> joinedRecord = 
     KeyedPCollectionTuple.of(collection1).and(collection2)
    .apply(CoGroupByKey.create());

接下来我尝试使用request_id将它们连接到另一个pcollection,这基本上是一个随机的uuid。由于apache beam和dataflow使用groupBy作为基元来进行连接,这确保了在连接基本上被洗牌之后生成的最终连接数据。这有保证吗? 如果我读取两个有限数据流的数据流并使用一些随机uuid连接它们,是否可以保证波束/数据流为连接的数据集产生足够好的混洗?

0 个答案:

没有答案