我想在我的Java程序中传递hive-site.xml文件的位置。
在Java代码中自动找出此文件位置的最佳方法是什么?
我不想硬编码/etc/hive/conf/hive-site.xml
的路径以实现Cloudera分发
最佳答案
缺省情况下,Hadoop Configuration
构造函数在 CLASSPATH 中存在的目录中搜索“blahblah-site.xml”配置文件。如果找不到它们,那么它将恢复为硬编码的“默认”值,而不会发出任何警告(!)。
因此请确保CLASSPATH在最前面包含适当的目录,例如/etc/hadoop/conf/:/etc/hive/conf/:/etc/tez/conf/:...
然后,您在Java代码中唯一要做的就是检查是否使用其他硬编码默认值设置了关键属性(如果不是,则引发PleaseSetupProperClasspathYouSuckerException)。