系统属性System.getProperties()和JVM中的环境变量System.getenv()有什么区别?
我有一个Uber jar执行一些级联ETL任务.jar的执行方式如下:
hadoop jar munge-data.jar
Run Code Online (Sandbox Code Playgroud)
我想在工作启动时将参数传递给jar,例如
hadoop jar munge-data.jar -Denv=prod
Run Code Online (Sandbox Code Playgroud)
将根据环境从属性文件中读取不同的凭据,主机名等.
如果作业被执行java jar munge-data.jar -Denv=prod,这将起作用,因为env可以访问该属性:
System.getProperty("env")
Run Code Online (Sandbox Code Playgroud)
但是,执行jar时这不起作用hadoop jar ....
我看到了一个类似的线程,其中回答者声明可以使用类似于org.apache.hadoop.conf.Configuration类的方法访问属性.从答案来看,我不清楚如何conf创建对象.我尝试了以下内容并返回null:
Configuration configuration = new Configuration();
System.out.println(configuration.get("env"));
Run Code Online (Sandbox Code Playgroud)
据推测,需要读取/设置配置属性.
你能告诉我如何将属性传递hadoop jar [...] -DsomeProperty=someValue给我的ETL工作吗?