Mapreduce回车

2024-04-29 04:21:07 发布

您现在位置:Python中文网/ 问答频道 /正文

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

问题是输入行末尾的回车字符被删除了,而tab被放在了后面(因为它是默认的分隔符)。你知道吗

为什么会这样?你知道吗

这是我启动MapReduce的代码

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

你知道吗映射器.py你知道吗

#!./venv/bin/python
import sys
for line in sys.stdin:
    sys.stdout.write(line)

Tags: pyhadoopoutputvenvmainsyslinefs
1条回答
网友
1楼 · 发布于 2024-04-29 04:21:07

您可以设置-D mapreduce.output.textoutputformat.separator=$'\r'。但是这会给每一行添加一个\r,即使输入中没有一行。你知道吗

MapReduce作业期望映射器输出一对,用于分隔输出中的键和值的分隔符由(mapreduce.output.textoutputformat文件.separator`(默认为制表符)。你知道吗

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

相关问题 更多 >