我们需要创建单独的线程来读取多个文件。
1)线程1可以读取文件1并创建PCollection。我可以在多线程环境中执行Pardo操作。并创建一个PCollection<字符串,字符串>来自PCollection<字符串>。 2)线程2并从线程1完成相同的操作,但是在不同的文件文件2上。 3)在线程1和线程2操作完成后,在主线程中加入File1和File 2的输出。
请告诉我是否可行,这是推荐的方法。
由于
答案 0 :(得分:1)
这听起来像你想要的可以完成梁。在Beam模型中,您没有定义 您希望运行的操作,而是您想要执行的操作;然后是Beam,底层的跑步者负责管理线程。
这就是为什么你通常不应该管理自己的线程来读取Beam中的文件。您应该使用TextIO
来读取纯文本文件,TextIO
模块应该并行读取文件。
在某些情况下,您的文件无法并行读取:
TextIO.readAll
而不是正常的TextIO
实现,因为跟踪并行读取的数千个文件可能会使系统崩溃。 如果您使用的是非纯文本文件或其他类型的来源,请告诉我。