我有一个在EMR上运行的Scalding作业。它在包含多个文件的S3存储桶上运行。源看起来像这样:

MultipleTextLineFiles("s3://path/to/input/").read
  /* ... some data processing ... */
  .write(Tsv("s3://paths/to/output/))

我想使其在嵌套存储桶中运行,即包含存储桶的存储桶,存储桶本身包含文件。它应该处理内部存储桶中的所有文件。如果我尝试在不更改源代码的情况下执行此操作,则会收到以下错误消息:
java.io.IOException: Not a file: s3://path/to/innerbucket

如何更改此作业以使其在嵌套存储桶上运行?

最佳答案

使用通配符:

s3://path/to/input/*

如果您具有多层嵌套,请使用多个通配符来访问文件:
s3://path/to/input/*/*/*

关于hadoop - 如何使我的Scalding作业在其输入存储桶上递归操作?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37030744/

10-13 02:25