我有一个与外部属性文件一起使用的jar应用程序。使用该文件以便用户可以覆盖默认属性。默认和核心属性是构建的一部分,所以没有问题。
Normaly我会像其中一个人那样做:
java -jar MyAwesomeApp.jar user.properties
OR
java -jar MyAwesomeApp.jar -Dmyapp.userproperties=user.properties
但是使用hadoop,jar会像hadoop框架一样在
中执行/bin/hadoop jar MyAwesomeApp.jar input output
无论我把-D放在哪里,我都无法通过System.getProperty(...)获取值。未设置属性。 hadoop文档说-D是GENERIC OPTION并在命令后设置。但是,如果我这样做,我得到一个错误,-D不是一个有效的jar文件(呃...)
我的目标是尽可能保持应用程序的清洁......所以我只想将用户配置作为参数传递给最后的手段,即
/bin/hadoop jar MyAwesomeApp.jar input output user.properties
我希望有人能告诉我要做-D工作需要做些什么:/ Hadoop运行伪分布式,所以我实际上也在使用HDFS ......