apache_beam.transforms.util.Reshuffle()不适用于GCP Dataflow

时间:2018-02-02 15:32:07

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

我已通过pip install --upgrade apache_beam[gcp]升级到最新的apache_beam [gcp]包。但是,我注意到[gcp]分布中没有显示Reshuffle()。这是否意味着我将无法在任何数据流管道中使用Reshuffle()?有没有办法解决?或者pip包可能不是最新的,如果Reshuffle()在github上是master,那么它将在数据流上可用吗?

基于对此question的响应,我尝试从BigQuery读取数据,然后在将数据写入GCP存储桶中的CSV之前随机化数据。我注意到我用来训练我的GCMLE模型的分片.csv并不是真正随机的。在tensorflow中,我可以随机化批处理,但这只会随机化队列中构建的每个文件中的行,我的问题是当前生成的文件在某种程度上存在偏差。如果在数据流中写入CSV之前有任何关于其他方式进行随机播放的建议,那将非常感激。

1 个答案:

答案 0 :(得分:3)

一种方法是自己重新创建洗牌。

import random

shuffled_data = (unshuffled_pcoll
        | 'AddRandomKeys' >> Map(lambda t: (random.getrandbits(32), t))
        | 'GroupByKey' >> GroupByKey()
        | 'RemoveRandomKeys' >> FlatMap(lambda t: t[1]))

如果我需要担心来自code

的窗口或ExpandIterable部分,我还剩下的问题是