【问题标题】:How to read multiple gzipped files from S3 into a single RDD with http request?如何使用 http 请求将 S3 中的多个 gzip 文件读入单个 RDD?
【发布时间】:2018-11-08 19:42:10
【问题描述】:

我必须像这样下载许多存储在 S3 上的 gzip 文件:

crawl-data/CC-MAIN-2018-43/segments/1539583508988.18/robotstxt/CC-MAIN-20181015080248-20181015101748-00000.warc.gz
crawl-data/CC-MAIN-2018-43/segments/1539583508988.18/robotstxt/CC-MAIN-20181015080248-20181015101748-00001.warc.gz

要下载它们,您必须添加前缀https://commoncrawl.s3.amazonaws.com/

我必须下载并解压缩文件,然后将内容组装为单个 RDD。

类似的东西:

JavaRDD<String> text = 
    sc.textFile("https://commoncrawl.s3.amazonaws.com/crawl-data/CC-MAIN-2018-43/segments/1539583508988.18/robotstxt/CC-MAIN-20181015080248-20181015101748-00000.warc.gz");

我想用 spark 做这段代码:

    for (String key : keys) {
        object = s3.getObject(new GetObjectRequest(bucketName, key));

        gzipStream = new GZIPInputStream(object.getObjectContent());
        decoder = new InputStreamReader(gzipStream);
        buffered = new BufferedReader(decoder);

        sitemaps = new ArrayList<>();

        String line = buffered.readLine();

        while (line != null) {
            if (line.matches("Sitemap:.*")) {
                sitemaps.add(line);
            }
            line = buffered.readLine();
        }

【问题讨论】:

标签: java apache-spark amazon-s3 common-crawl


【解决方案1】:

要从 S3 读取内容,您可以这样做:

sc.textFiles("s3n://path/to/dir")

如果dir 包含您的 gzip 文件,它们将被压缩并合并为一个 RDD。如果您的文件不直接位于目录的根目录,如下所示:

/root
  /a
    f1.gz
    f2.gz
  /b
    f3.gz

甚至这个:

/root
  f3.gz
  /a
    f1.gz
    f2.gz

那么你应该像sc.textFiles("s3n://path/to/dir/*")这样使用通配符,spark会递归地在dir及其子目录中查找文件。

但请注意this。通配符可以使用,但您可能会在生产中遇到 S3 延迟问题,并且可能希望使用您检索路径的 AmazonS3Client。

【讨论】:

  • 不是你的是什么意思?
  • 我发现这个错误我们计算的请求签名与您提供的签名不匹配。检查您的密钥和签名方法
  • 如果我使用 s3n,错误是:绝对 URI 中的相对路径:S3ObjectSummary
  • 你试过这样的事情吗? sc.textFile("https://commoncrawl.s3.amazonaws.com/crawl-data/CC-MAIN-2018-43/segments/1539583508988.18/robotstxt/*")
猜你喜欢
  • 2015-02-13
  • 2014-07-24
  • 1970-01-01
  • 2020-01-29
  • 2018-02-22
  • 2020-09-29
  • 2020-02-02
  • 2010-09-11
  • 1970-01-01
相关资源
最近更新 更多