首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Mapreduce回车

Mapreduce回车
EN

Stack Overflow用户
提问于 2019-01-19 04:53:21
回答 1查看 198关注 0票数 0

我想使用输入格式s3a在MapReduce中处理CommonCrawl WARC文件。

问题是输入行末尾的回车字符被删除,取而代之的是制表符(因为它是默认的分隔符)。

这一切为什么要发生?

这是我用来启动MapReduce的代码

代码语言:javascript
复制
time yarn jar /usr/hdp/current/hadoop-mapreduce-client/hadoop-streaming.jar \
  -D mapred.compress.map.output=true \
  -D mapred.reduce.tasks=0 \
  -D mapred.job.name=cc \
  -D fs.s3a.aws.credentials.provider=org.apache.hadoop.fs.s3a.AnonymousAWSCredentialsProvider \
  -files mapper.py \
  -archives wasbs://cluster@ccscsg.blob.core.windows.net/user/ubuntu/virtualenv/.venv2.zip#venv \
  -mapper mapper.py \
  -input s3a://commoncrawl/crawl-data/CC-MAIN-2018-39/segments/1537267155413.17/warc/CC-MAIN-20180918130631-20180918150631-00000.warc.gz \
  -output /output_warc

mapper.py

代码语言:javascript
复制
#!./venv/bin/python
import sys
for line in sys.stdin:
    sys.stdout.write(line)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-01-21 01:52:36

您可以设置-D mapreduce.output.textoutputformat.separator=$'\r'。但这会将\r添加到每一行,即使输入中没有。

MapReduce作业期望一对映射器输出,并且用于分隔输出中的键和值的分隔符由(mapreduce.output.textoutputformat.separator` (制表符是默认值)设置)。

顺便说一句,WARC文件不是文本文件-有二进制有效载荷(PDF、图像),并且HTML没有固定的内容编码。您可以考虑使用WARC解析库(例如,warcio)或简单地使用cc-mrjobcc-pyspark来进行处理。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54261294

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档