2017-05-19 19 views
0

スクリプトにパラメータを渡すオプションを使用してHDFSに格納されたシェルスクリプトを実行します。私は、次の作品 HDFSに格納されているシェルスクリプトにパラメータを渡す

hadoop fs -cat hdfs://path_to_script/sample.sh | exec bash

私は、次の作業

を作りたいを確認したhadoop fs -cat hdfs://path_to_script/sample.sh param1 param2 param3 param4 | exec bash

問題は、catコマンドは、ファイルが標準出力にストリーミングされることを想定していることですが、パラメータは、フォルダやファイルをHDFSに保存します。それを動作させる他の方法?

答えて

1

hadoop fs cat(プロセス代入中)という別個の呼び出しを使用して各ファイルを検索し、読み取るために開くファイル名としてsample.shに提示します。

# Adjust the hdfs: URLs as necessary 
hadoop fs -cat hdfs://path_to_script/sample.sh | exec bash \ 
    <(hadoop fs -cat hdfs://param1) \ 
    <(hadoop fs -cat hdfs://param2) \ 
    <(hadoop fs -cat hdfs://param3) \ 
    <(hadoop fs -cat hdfs://param4) 

sample.shはすでにどのようにして、HDFSからの読み取りに

hadoop fs -cat hdfs://path_to_script/sample.sh | exec bash -s param1 param2 param3 param4 

十分あり得ることを知っている場合。 -sオプションは、標準入力からスクリプトを読み取るようにbashに指示するので、実行するスクリプトの名前としてparam1を間違えないようにします。

+0

chepnerさん、ありがとうございました。-sが動作していました。スクリプトにパラメータを渡すことができました。 – medich

0

あなたはして試すことができます:あなたは、次のようなものを試してみてください

hadoop fs -cat hdfs://path_to_script/sample.sh | exec bash -s param1 param2 param3 param4 
関連する問題