4

この前の質問では、hadoop ストリーミング用に nltk などのモジュールをインポートする方法について説明しました。

概説された手順は次のとおりです。

zip -r nltkandyaml.zip nltk yaml
mv ntlkandyaml.zip /path/to/where/your/mapper/will/be/nltkandyaml.mod

Python スクリプトで使用するために nltk モジュールをインポートできるようになりました: import zipimport

importer = zipimport.zipimporter('nltkandyaml.mod')
yaml = importer.load_module('yaml')
nltk = importer.load_module('nltk')

Amazon の EMRで実行したいジョブがありますが、zip ファイルをどこに置くべきかわかりません。ブートストラップ オプションの下にブートストラップ スクリプトを作成する必要がありますか、それとも tar.gz を S3 に配置してから追加の引数に配置する必要がありますか? 私はこれらすべてにかなり慣れていないので、プロセスを順を追って説明できる回答をいただければ幸いです。

4

1 に答える 1

2

次のオプションがあります。

  1. ブートストラップアクションスクリプトを作成し、S3に配置します。このスクリプトは、モジュールを任意の形式でダウンロードし、マッパー/リデューサーがアクセスできる場所に配置します。ファイルを正確に配置する必要がある場所を見つけるには、完了後にシャットダウンしないようにクラスターを起動し、そこでsshを実行して、ディレクトリ構造を調べます。

  2. mrjobを使用してジョブフローを起動します。mrjobでジョブを開始する場合、 .tar.gzを解凍してsetup.py installを実行することにより、mrjobが自動的にインストールするbootstrap_python_packagesを指定できます。

http://packages.python.org/mrjob/configs-runners.html

mrjobはPythonでのMapReduceジョブの開発にも大いに役立つため、オプション2をお勧めします。特に、ローカル(Hadoopの有無にかかわらず)およびEMRでジョブを実行できるため、デバッグが簡素化されます。

于 2011-11-15T16:00:02.100 に答える