Bash 将参数传递到存储在HDFS中的shell脚本
我想执行一个存储在HDFS中的shell脚本,其中有一个向脚本传递参数的选项。我已经验证了以下工作 hadoop fs-cathdfs://path_to_script/sample.sh |exec bash 我想做以下工作 hadoop fs-cathdfs://path_to_script/sample.sh param1 param2 param3 param4| exec bash 问题是cat命令期望文件流式传输到stdout,但参数是存储在HDFS中的文件夹和文件。还有别的办法吗 您可以尝试:Bash 将参数传递到存储在HDFS中的shell脚本,bash,shell,hadoop,hdfs,Bash,Shell,Hadoop,Hdfs,我想执行一个存储在HDFS中的shell脚本,其中有一个向脚本传递参数的选项。我已经验证了以下工作 hadoop fs-cathdfs://path_to_script/sample.sh |exec bash 我想做以下工作 hadoop fs-cathdfs://path_to_script/sample.sh param1 param2 param3 param4| exec bash 问题是cat命令期望文件流式传输到stdout,但参数是存储在HDFS中的文件夹和文件。还有别的办法吗
hadoop fs -cat hdfs://path_to_script/sample.sh | exec bash -s param1 param2 param3 param4
您可以尝试以下方法:
hadoop fs -cat hdfs://path_to_script/sample.sh | exec bash -s param1 param2 param3 param4
您可以尝试以下方法:;它使用单独调用
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)
可能足够了。
-s
选项告诉bash从标准输入读取脚本,这样就不会将param1
误认为要运行的脚本的名称;它使用单独调用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)
可能足够了。
-s
选项告诉bash从标准输入读取脚本,这样就不会将param1
误认为要运行的脚本的名称。这将执行HDFS中的shell脚本
hdfs dfs -cat /user/gno1kor/HiveSqoop/HivequeryToWrite.sh | exec bash -s param1, param2
这将执行HDFS中的shell脚本
hdfs dfs -cat /user/gno1kor/HiveSqoop/HivequeryToWrite.sh | exec bash -s param1, param2
谢谢你,切普纳,-s选项起作用了,现在我可以将参数传递给脚本谢谢,切普纳,-s选项起作用了,现在我可以将参数传递给脚本了