2012-05-08 4 views
3

私は、単一のJARファイルからhadoopクラスタでいくつかのmap reduceジョブを実行していました。 JARのMainはXMLファイルをコマンドラインパラメータとして受け取ります。 XMLファイルには、各ジョブの入力および出力パス(名前と値のプロパティのペア)が含まれており、これらを使用して各mapreduceジョブを構成します。私は今、AmazonのElastic MapReduceのを使用してJARを実行しようとしていますので、Amazon EMR:JARへのXMLファイルまたはプロパティファイルの受け渡し

Configuration config = new Configuration(false); 
    config.addResource(new FileInputStream(args[0])); 

のようにコンフィギュレーションへのパスをロードすることができますよ。私はS3にXMLファイルをアップロードしようとしましたが、S3からのパスデータを読み込むためにFileInputStreamを使用してももちろん動作しませんでした(FileNotFound Exception)。

EMRを使用する場合、XMLファイルをJARに渡すにはどうすればよいですか?

(私はブートストラップの動作を見ていましたが、これはhadoop固有の設定を指定するためのものです)。

洞察力があれば幸いです。ありがとう。

答えて

4

あなたは

hadoop fs -copyToLocal s3n://bucket/key.xml /target/path/on/local/filesystem.xml 

を行い、単純なブートストラップアクションを追加する場合は、あなたが意図していたとして/target/path/on/local/filesystem.xml上のFileInputStreamを開くことができます。ブートストラップアクションは、クラスタ内のすべてのマスタ/スレーブマシンで同時に実行されるため、すべてローカルコピーが作成されます。

このブートストラップアクションを追加するには、上記のコマンドを含むシェルスクリプトファイルを作成し、をS3にアップロードし、スクリプトのブートストラップアクションパスとして指定する必要があります。残念ながら、s3のシェルスクリプトは、現在のところ唯一許容されている種類のブートストラップアクションです。

+0

ありがとう私はそれを試してみます –

+0

このように見えます。ありがとうございました!!! –

関連する問題