我已通过pip install --upgrade apache_beam[gcp]
升级到最新的apache_beam [gcp]包。但是,我注意到[gcp]
分布中没有显示Reshuffle()。这是否意味着我将无法在任何数据流管道中使用Reshuffle()
?有没有办法解决?或者pip包可能不是最新的,如果Reshuffle()在github上是master,那么它将在数据流上可用吗?
基于对此question的响应,我尝试从BigQuery读取数据,然后在将数据写入GCP存储桶中的CSV之前随机化数据。我注意到我用来训练我的GCMLE模型的分片.csv并不是真正随机的。在tensorflow中,我可以随机化批处理,但这只会随机化队列中构建的每个文件中的行,我的问题是当前生成的文件在某种程度上存在偏差。如果在数据流中写入CSV之前有任何关于其他方式进行随机播放的建议,那将非常感激。
答案 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
部分,我还剩下的问题是