我有一个大约10个Hadoop作业的流。我有一系列配置这些作业的XML文件,例如:
-conf /path/on/my/local/system/start-conf.xml
-conf /path/on/my/local/system/job-1-conf.xml
-conf /path/on/my/local/system/job-2-conf.xml
-conf /path/on/my/local/system/job-i-conf.xml
...
-conf /path/on/my/local/system/job-10-conf.xml假设我有用于运行名为"com.my.project.RunClass“的作业的类。假设我使用以下命令运行作业:
hadoop jar /path/to/project.jar com.my.project.RunClass -conf /path/on/my/local/system/start-conf.xml我想用某个占位符替换段"/path/on/my/local/system“,例如:${root.conf.dir},这样我就可以运行如下所示的作业:
hadoop jar /path/to/project.jar com.my.project.RunClass -conf ${root.conf.dir}/job-1-conf.xml -Droot.conf.dir=/path/on/my/local/system这在Hadoop的任何版本中都是可能的吗?我使用的是Cloudera发行版,似乎每次都失败了。
发布于 2011-11-17 07:56:13
我不知道bash 4.*,但较旧的bash不支持带‘.’的变量名称。
试一试
root_conf_dir="/path/on/my/local/system"
hadoop jar /path/to/project.jar com.my.project.RunClass \
-conf "${root_conf_dir}"/job-1-conf.xml \
-Droot.conf.dir="${root_conf_dir}"我希望这能帮到你。
https://stackoverflow.com/questions/8155084
复制相似问题