使用选项(getopts)在HDFS上调用脚本

时间:2019-06-01 05:04:51

标签: bash hadoop

我试图在传递参数而不是参数的同时在HDFS上运行shell脚本。使用选项是因为不需要所有参数,因此使用选项(getopts)将允许根据需要混合和匹配所有参数/标志。

如果shell脚本在本地运行,我可以在其上获取getopts,并且可以使用参数(位置参数)在HDFS上运行脚本。

// This works locally
test-script.sh -j javaJar -o someOutput

// This works on HDFS
hdfs dfs /test/test-script.sh|exec sh -s javaJar someOutput

// This errors out, as the options are being sent to exec, as opposed to the hdfs command
hdfs dfs /test/test-script.sh|exec sh -s "-j jarFile -o someOutput"

我希望能够将这些选项传递到HDFS上的Shell脚本中,但是正在努力解决这一问题。我已经研究过xargs之类的选项,但是这些组合也使我失望。

是否可以在从HDFS执行的脚本中使用getopts?如果不是,当参数的数量和顺序不固定时,还有其他选择吗?

// Example: -d <date> and -t <type> may or may not be used
// This works
test-script.sh -j javaJar -o someOutput -t weekday
test-script.sh -j javaJar -o someOutput -d 20190101

对于在HDFS上运行的脚本,我需要具有这种灵活性。这有可能吗?

0 个答案:

没有答案