Как настроить конфигурацию запуска приложения, чтобы использовать собственный файл core-site.xml
для конфигураций hadoop?Я хотел бы добавить свойства в опции vm, которые хорошо работали для настроек spark, таких как -Dspark.hadoop.fs.defaultFS=localhost:9000
, но я хотел бы сделать то же самое для моих локальных объектов конфигурации hadoop.Я знаю, что могу создать код, который будет читать мой core-site.xml, но я не хочу этого делать из-за того, что для удаленных кластеров уже настроен соответствующий fs.defaultsFS
, поэтому он предназначен только для локального тестирования.Итак, прямо сейчас у меня есть это:
def getHdpConfig(): Configuration = {
val hadoopConf = new Configuration()
val coreSiteXML = s"${System.getenv("HADOOP_CONF_DIR")}/core-site.xml"
val hdfsSiteXML = s"${System.getenv("HADOOP_CONF_DIR")}/hdfs-site.xml"
hadoopConf.addResource(new Path("file:///" + coreSiteXML))
hadoopConf.addResource(new Path("file:///" + hdfsSiteXML))
hadoopConf
}
val hadoopConf = new Configuration()
println(hadoopConf.get("fs.defaultFS")) // -> file:/// (should be hfds://localhost:9000 picked up from core-site.xml
println(getHdpConfig().get("fs.defaultFS")) // don't want to do this -> hfds://localhost:9000
Также это работает точно так же, как и ожидалось в Spark-Shell, потому что у меня есть моя искра, настроенная для получения моего HADOOP_CONF_DIR
.
scala> val hadoopConf = new Configuration()
hadoopConf: org.apache.hadoop.conf.Configuration = Configuration: core-default.xml, core-site.xml, mapred-default.xml, mapred-site.xml, yarn-default.xml, yarn-site.xml, hdfs-default.xml, hdfs-site.xml
scala> hadoopConf.get("fs.defaultFS")
res2: String = hdfs://localhost:9000