【发布时间】: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();
}
【问题讨论】:
-
已经有一个工具可以从 Common Crawl robots.txt 档案中提取所有站点地图:github.com/commoncrawl/cc-mrjob/blob/master/… 它是 Python 并且基于 mrjob,但是很容易将它移植到 Spark,参见。 cc-pyspark.
标签: java apache-spark amazon-s3 common-crawl