7

Javaでプログラムを書くとき、FileSplitを使ってマッパークラスの入力ファイルなら名前を見つけることができます。

Python で (ストリーミングを使用して) プログラムを作成するときに、これを行う対応する方法はありますか?

Apache の Hadoop ストリーミング ドキュメントで次の情報を見つけました。

構成パラメータを参照してください。ストリーミング ジョブの実行中に、「mapred」パラメータの名前が変換されます。ドット ( . ) はアンダースコア ( _ ) になります。たとえば、mapred.job.id は mapred_job_id になり、mapred.jar は mapred_jar になります。コードでは、パラメーター名にアンダースコアを付けて使用します。

しかし、マッパー内でこれを利用する方法をまだ理解できません。

どんな助けでも大歓迎です。

ありがとう

4

3 に答える 3

8

「Hadoop : The Definitive Guide」によると

Hadoop は、ジョブ構成パラメーターをストリーミング プログラムの環境変数として設定します。ただし、有効な名前であることを確認するために、英数字以外の文字をアンダースコアに置き換えます。次の Python 式は、Python ストリーミング スクリプト内から mapred.job.id プロパティの値を取得する方法を示しています。

os.environ["mapred_job_id"]

ストリーミング ランチャー プログラムに -cmdenv オプションを適用することで、MapReduce によって起動されるストリーミング プロセスの環境変数を設定することもできます (設定する変数ごとに 1 回)。たとえば、次は MAGIC_PARAMETER 環境変数を設定します。

-cmdenv MAGIC_PARAMETER=アブラカダブラ

于 2011-09-17T04:30:40.150 に答える