我正在开发一个spark应用程序。在为应用程序编写测试用例时,我遇到了需要用不同的文件而不是生产文件初始化对象的var的要求。例如:
ObjA{
val properties: Properties = new Properties()
properties.load(new FileInputStream("constants.properties"))
val map = JavaConverters.propertiesAsScalaMapConverter(properties).asScala
}
在测试环境中,我想使用constants.properties
以外的其他文件。即我想用测试目录中的文件constant.properties
初始化objA。我不想将文件名作为参数传递给方法。是否存在应用程序计算env(测试或生产)并根据其初始化变量的方法?
由于
答案 0 :(得分:0)
您可以使用来自驱动程序的ip(您提交应用程序的节点)。之前,初始化sparkContext找到你测试env ip,你可以做一些像下面的事情,
import java.net._
val ip = InetAddress.getLocalHost
val props = if (ip == "ip-xx-xxx-xx-xx.ec2.internal") "TestConstant.properties" else "productionConstants.properties"
properties.load(new FileInputStream("props"))
所以,在测试环境中,它会在任何其他环境中加载测试属性,它将加载prod属性