使用 Google 数据流管道读取/解析/写入文件的推荐方法是什么?
What is the recommended approach to read / parse / write a file using Google Data Flow pipeline?
Google 需要设置数据流管道以处理文件(读取、转换和写入),然后将输出写入另一个文件。简而言之,这个过程是 READ > PARSE > TRANSFORM > WRITE。是否可以并行执行此操作?如何根据文件对记录进行分组?例如:输入文件 A-IN.TXT 中的记录需要写入输出文件 A-OUT.TXT。是否有任何内置功能可用于支持此功能?
Apache Beam(Google Cloud Dataflow 使用的 SDK)提供了许多用于处理文件的转换。例如,
Dataflow 通过以下方式并行读取这些文件:(1) 在读取之前初始拆分为逻辑块 (2) 动态工作重新平衡以在读取时处理散乱的文件。
有关动态工作重新平衡的更多详细信息,请参阅 here。
TextIO
、AvroIO
等,目前不跟踪输入文件。因此,您可能必须使用 FIleIO
提供的转换(例如 FileIO.match()
后跟 FileIO.readMatches()
)并从 ParDO
读取数据并生成 PCollection
包含记录和文件名。这些可以使用 dynamic destination feature offered by FileIO
.
写入相应的文件
Google 需要设置数据流管道以处理文件(读取、转换和写入),然后将输出写入另一个文件。简而言之,这个过程是 READ > PARSE > TRANSFORM > WRITE。是否可以并行执行此操作?如何根据文件对记录进行分组?例如:输入文件 A-IN.TXT 中的记录需要写入输出文件 A-OUT.TXT。是否有任何内置功能可用于支持此功能?
Apache Beam(Google Cloud Dataflow 使用的 SDK)提供了许多用于处理文件的转换。例如,
Dataflow 通过以下方式并行读取这些文件:(1) 在读取之前初始拆分为逻辑块 (2) 动态工作重新平衡以在读取时处理散乱的文件。 有关动态工作重新平衡的更多详细信息,请参阅 here。
TextIO
、AvroIO
等,目前不跟踪输入文件。因此,您可能必须使用 FIleIO
提供的转换(例如 FileIO.match()
后跟 FileIO.readMatches()
)并从 ParDO
读取数据并生成 PCollection
包含记录和文件名。这些可以使用 dynamic destination feature offered by FileIO
.