2011-09-16 14 views
7

Javaでプログラムを書くときに、FileSplitを使ってマッパークラスの入力ファイルに名前が見つかることがあります。 (?ストリーミングを使用して)ストリーミングハーププログラムで入力ファイル名を取得

私はPythonでプログラムを書く際にこれを行うには、対応する方法はあり

私は、ApacheのHadoopのストリーミング文書に次を見つけた:

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

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

ご協力いただきまして誠にありがとうございます。

おかげ

答えて

7

"Hadoop : The Definitive Guide"

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

はos.environ [「mapred_job_id」]

あなたはまたのための環境変数を設定することができますStreamingランチャープログラムに-cmdenvオプションを適用することによってMapReduceによって開始されたストリーミングプロセス(設定したい変数ごとに1回)。例えば、以下はMAGIC_PARAMETER環境変数を設定しますのHadoop 2.xの

-cmdenv MAGIC_PARAMETER =アブラカダブラ

+2

Krishnamutryのニーズが「map.input.file」と呼ばれるように見えますが、これはストリーミングジョブに「map_input_file」環境変数として表示される可能性があります。 –

+0

注:ピリオドはアンダースコアに置き換えてください。 –

+0

ありがとうございます。 –

0

新しいENV_VARIABLEは(mapreduce_map_input_file(新規)またはmap_input_fileを解析してMAPREDUCE_MAP_INPUT_FILE

+0

小文字の 'mapreduce_map_input_file'を使用する必要があります。 – ofekp

4

ありますdeprecated)環境変数を使用すると、マップ入力ファイル名が取得されます。

注意:2つの環境変数は大文字と小文字が区別され
、すべての文字が小文字です。

+1

map_input_fileはhadoop 0.20.xのために動作します。 – Blake

関連する問題