2

Google Ngrams データを使用してさまざまな統計を計算するために、 mrjobでタスクを作成しています: 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 に対して相対的に無知です。)

4

1 に答える 1