Spark:如何生成文件路径以使用scala从s3读取

Spark :How to generate file path to read from s3 with scala

如何在 scala 中生成并加载多个 s3 文件路径以便我可以使用 :

   sqlContext.read.json ("s3://..../*/*/*")

我知道我可以使用通配符来读取多个文件,但是有什么方法可以生成路径吗?例如我的文件结构如下所示: BucketName/year/month/day/files

       s3://testBucket/2016/10/16/part00000

这些文件都是json。问题是我只需要加载文件的特定持续时间,例如。说 16 天,然后我需要加载开始日(10 月 16 日)的文件:10 月 1 日到 16 日。

同一个开始日有 28 天的持续时间,我想从 9 月 18 日开始阅读

有人能告诉我有什么方法可以做到这一点吗?

您可以生成逗号分隔的路径列表: sqlContext.read.json (s3://testBucket/2016/10/16/,s3://testBucket/2016/10/15/,...);

你可以看看这个answer,你可以指定整个directories,使用wildcards甚至CSV of directories and wildcards。例如:

sc.textFile("/my/dir1,/my/paths/part-00[0-5]*,/another/dir,/a/specific/file")

或者您可以使用 AWS API 获取 list of files locations 并使用 spark 读取这些文件。

您可以查看此 answer 到 AWS S3 文件搜索。