【问题标题】:Spark :How to generate file path to read from s3 with scalaSpark:如何生成文件路径以使用 scala 从 s3 读取
【发布时间】:2017-02-25 08:27:44
【问题描述】:

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

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

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

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

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

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

有人能告诉我有什么方法吗?

【问题讨论】:

标签: json scala apache-spark amazon-s3 filesystems


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    你可以看看这个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 文件搜索。

    【讨论】:

    • 我的问题是如何从开始日获取我的密钥列表如何动态获取路径。所有的路径。开始日 - 28
    • 从输入中获取的所有内容都是开始日期和结束日期。是否有任何实用程序可以生成它们之间的日期,以便我可以通过连接创建一个列表
    • 我根据您的解决方案更新了我的问题。这是正确的做法吗?
    • Yoi 在 url 的末尾有三个开头。它将读取 2016 文件夹下的所有文件
    猜你喜欢
    • 2015-12-04
    • 2021-06-12
    • 1970-01-01
    • 2021-04-27
    • 1970-01-01
    • 2019-03-25
    • 1970-01-01
    • 2018-10-18
    • 2015-08-31
    相关资源
    最近更新 更多