Google cloud platform apache beam avroIO读取api

Google cloud platform apache beam avroIO读取api,google-cloud-platform,google-cloud-storage,google-cloud-dataflow,avro,apache-beam,Google Cloud Platform,Google Cloud Storage,Google Cloud Dataflow,Avro,Apache Beam,我正在使用ApacheBeamAvroio来读取大约一百万个文件。有没有对AvoRIO所读取的记录的排序保证,或者我可以认为它们被洗牌了吗?在读取这些文件之后,我需要对数据进行无序处理,如果要进行多天的处理,这可能会非常昂贵和耗时,但这是否与先对文件进行无序处理,然后再读取它们相同?我知道洗牌文件不是完全的洗牌,因为我不会洗牌文件中的记录,但我可以在文件级别上使用足够好的洗牌,所以想知道当avroIO读取数百万个文件时,它在内部是否使用任何排序文件创建时间戳,或按字典排序文件名?我还可以看到av

我正在使用ApacheBeamAvroio来读取大约一百万个文件。有没有对AvoRIO所读取的记录的排序保证,或者我可以认为它们被洗牌了吗?在读取这些文件之后,我需要对数据进行无序处理,如果要进行多天的处理,这可能会非常昂贵和耗时,但这是否与先对文件进行无序处理,然后再读取它们相同?我知道洗牌文件不是完全的洗牌,因为我不会洗牌文件中的记录,但我可以在文件级别上使用足够好的洗牌,所以想知道当avroIO读取数百万个文件时,它在内部是否使用任何排序文件创建时间戳,或按字典排序文件名?我还可以看到avroIO.ReadAll transform在内部对所有文件进行了重新洗牌,所以考虑到文件级的洗牌对于我的用例来说可能已经足够好了,我是否有必要对我的数据进行另一次洗牌呢


apache beam中是否有一种好方法可以确保我可以直接读取洗牌数据,而不必将它们平铺成数十亿条记录,然后使用groupby,即使使用洗牌服务,它的速度也很慢,而且价格也很昂贵。

AvroIO对数据洗牌没有任何保证。ApacheBeamSDK是开源的,所以正如您所提到的,它可以。但是,看起来这是转换实现的一个实现细节。如果您的应用程序需要洗牌数据,我建议添加显式洗牌,而不是依赖内部细节。

您能详细描述一下您的应用程序用例吗?您希望通过洗牌数据来实现什么?ApacheBeam中的PCollections是无序的,因此您不应该对数据的排序或随机化做出任何假设。只需将训练数据洗牌以训练我们的模型。数据存储在地面军事系统存储桶上的数百万个文件中,因此我想对训练数据进行洗牌,以训练一些模型。我可以接受近似的洗牌,也就是说,我看到ReadALL基本上在内部调用从所有匹配文件创建的所有分区拆分的洗牌。