我试图在传递参数而不是参数的同时在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上运行的脚本,我需要具有这种灵活性。这有可能吗?