我正在使用 mrjob 编写任务,以使用 Google Ngrams 数据计算各种统计数据:https ://aws.amazon.com/datasets/8172056142375670
我使用制表符分隔文本中未压缩的数据子集在本地开发和测试了我的脚本。一旦我尝试运行该作业,我就会收到此错误:
Traceback (most recent call last):
File "ngram_counts.py", line 74, in <module>
MRNGramCounts.run()
File "/usr/lib/python2.6/dist-packages/mrjob/job.py", line 500, in run
mr_job.execute()
File "/usr/lib/python2.6/dist-packages/mrjob/job.py", line 509, in execute
self.run_mapper(self.options.step_num)
File "/usr/lib/python2.6/dist-packages/mrjob/job.py", line 574, in run_mapper
for out_key, out_value in mapper(key, value) or ():
File "ngram_counts.py", line 51, in mapper
(ngram, year, _mc, _pc, _vc) = line.split('\t')
ValueError: need more than 2 values to unpack
(while reading from s3://datasets.elasticmapreduce/ngrams/books/20090715/eng-1M/5gram/data)
这大概是因为公共数据集的压缩方案(来自上面的 URL 链接):
我们将数据集存储在 Amazon S3 中的单个对象中。该文件是具有块级 LZO 压缩的序列文件格式。序列文件键是存储为 LongWritable 的数据集的行号,值是存储为 TextWritable 的原始数据。
有关如何设置可以处理这些文件的工作流的任何指导?我已经详尽地搜索了提示,但没有找到任何有用的...
(我是 mrjob 和 Hadoop 的相对 n00b。)