0

我們目前正在開展關於雲數據流的Apache Beam Pipeline概念驗證。我們將一些文件(無文本;自定義二進制格式)放入Google Cloud Buckets中,並希望將這些文件作爲byte []讀取,並在流程中反序列化它們。但是,我們無法找到能夠讀取非文本文件的Beam源文件。 唯一的想法是擴展FileBasedSource類,但我們認爲應該有一個更簡單的解決方案,因爲這聽起來像一個非常簡單的任務。如何在Apache Beam中將文件讀取爲byte []?

謝謝你們的幫助。

回答

1

這其實是一個普遍實用的功能,目前正在審查中pull request #3717

我一般會回答無論如何,只是傳播信息。

FileBasedSource以及Beam的源代碼抽象的主要目的是提供文件集合的靈活分割,將其視爲一個龐大的數據集,每行記錄一條記錄。

如果每個文件只有一條記錄,那麼您可以從文件名中讀取ParDo(DoFn)中的文件到byte[]。您將獲得分割的最大好處,因爲任何PCollection都支持元素之間的分割。

由於數據流如何優化,您可能需要在ParDo之前進行Reshuffle轉換。這將確保讀取所有文件的並行性與任何上游轉換將其名稱注入PCollection的並行性相分離。

相關問題