我有一個保存KV並且只有一個鍵值的PCollection,鍵沒有意義,並且該值保存KV的可迭代值。這個內部KV的關鍵是一個數字,這個KV的值是一個字符串的Iterable。 的PCollection的定義是這樣的:數據流按照PCollection的順序寫入文件
PCollection<KV<String, Iterable<KV<Long, Iterable<String>>>>>
我想寫在一臺機器上的文件:排序由數字,每個數字和在這個數字中,文件一行中的每個字符串。
使用這個PCollection我可以有一個ParDo,在它的processElement方法中接收所有的數字和它們的字符串。 現在我可以按數字排序,迭代數字,每個數字迭代字符串並將字符串和數字輸出到輸出集合。
然而,當我寫這篇文章收集到這樣的文件:
outputCollection.apply(TextIO.Write.withoutSharding().to(options.getOutputFilePath()));
字符串不寫的數量排序,似乎寫入並行執行,即使它是在本地完成單機。 儘管我將「number:string」插入按照數字排序的輸出集合中,但在文件中我看到了混合的數字。
如何控制TextIO.Write寫入記錄的順序?我可以告訴它在單個線程中運行並使用元素插入到PCollection的順序嗎?
謝謝
[從谷歌雲數據流輸出排序的文本文件(https://stackoverflow.com/questions/39110258/output-sorted-text-file-from-google-cloud-dataflow)的可能的複製 –
同樣在這裏看到(閱讀,但同樣的問題) - > https://stackoverflow.com/questions/42027780/read-file-in-order-in-google-cloud-dataflow –