Google cloud dataflow 数据流按PCollection的顺序写入文件

Google cloud dataflow 数据流按PCollection的顺序写入文件,google-cloud-dataflow,Google Cloud Dataflow,我有一个PCollection,它包含KV,只有一个键值,这个键值没有意义,这个值包含一个KVs的Iterable。这个内部KV的键是一个数字,这个KV的值是一个字符串的Iterable。 PCollection的定义如下: PCollection<KV<String, Iterable<KV<Long, Iterable<String>>>>> outputCollection.apply(TextIO.Write.withoutS

我有一个PCollection,它包含KV,只有一个键值,这个键值没有意义,这个值包含一个KVs的Iterable。这个内部KV的键是一个数字,这个KV的值是一个字符串的Iterable。 PCollection的定义如下:

PCollection<KV<String, Iterable<KV<Long, Iterable<String>>>>>
outputCollection.apply(TextIO.Write.withoutSharding().to(options.getOutputFilePath()));
字符串不是按数字排序写入的,似乎写入是并行完成的,即使它是在一台机器上本地完成的。 尽管我将“number:string”插入到了根据数字排序的输出集合中,但在文件中我看到数字混淆了

如何控制TextIO.Write写入记录的顺序?我可以告诉它在单个线程中运行,并使用元素插入到PCollection的顺序吗


谢谢

PCollection中的元素是无序的。这与以下事实密切相关:一个PCollection中的所有元素都可能在不同的机器上处理,并且机器之间的排序将很困难

如果您知道一个特定键的所有数据适合一台机器,则可以输出包含所有值的单个元素,然后创建一个自定义接收器,将其写入文件。

可能的重复项也请参见此处(读取,但问题相同)->