【发布时间】:2015-10-09 22:29:09
【问题描述】:
我有一个执行一些级联 ETL 任务的 Uber jar。 jar 是这样执行的:
hadoop jar munge-data.jar
我想在作业启动时将参数传递给 jar,例如
hadoop jar munge-data.jar -Denv=prod
将根据环境从属性文件中读取不同的凭据、主机名等。
如果作业被执行java jar munge-data.jar -Denv=prod,这将起作用,因为可以访问env 属性:
System.getProperty("env")
但是,当 jar 被执行 hadoop jar ... 时,这不起作用。
我看到了similar thread,其中回答者指出可以使用类似于 org.apache.hadoop.conf.Configuration 的类来访问属性。从答案中我不清楚conf 对象是如何创建的。我尝试了以下方法,它返回了null:
Configuration configuration = new Configuration();
System.out.println(configuration.get("env"));
大概是需要读取/设置配置属性。
你能告诉我如何传递属性,例如hadoop jar [...] -DsomeProperty=someValue,加入我的 ETL 工作?
【问题讨论】: