FileBasedSource匹配多个模式

时间:2018-02-13 18:50:13

标签: google-cloud-dataflow apache-beam

假设我在Google云端存储中有以下结构:

gs://bucket/
  aaa/
    file1.txt
    file2.txt
    ...
  aab/
    file1.txt
    file2.txt
    ...
  ...
  baa/
    file1.txt
    file2.txt
    ...
  ...

使用FileBasedSource阅读 txt 文件的最佳方法是什么?我不能使用glob模式来匹配文件,因为我需要能够选择一个范围,例如我想匹配范围[aaz,baz]中所有目录中的所有 txt 文件。我也知道我可以使用不同的源创建多个PCollection<>,然后使用 Flatten 转换合并它们,但是我不确定性能和动态工作重新平衡将如何如果来自不同来源的PCollection<>太多,会受到影响。

1 个答案:

答案 0 :(得分:0)

建议使用 TextIO 而不是 FileBasedSource 进行更高级别的实现。您可以将FileIO.match()或matchAll()与FileIO.readMatches()和TextIO.readFiles()结合使用。