[英]spark-submit: Passing java properties file gives FileNotFoundException
我有一个火花作业,我正在yarn
cluster
模式下运行。 我需要传递我的应用程序特定的Java属性文件。 我正在做这个java FileInputStream
。
但是我面对/home/aiman/config/my-file.properties的FileNotFoundException
我的Java属性文件是: /home/aiman/config/my-file.properties
mongo_server=my.mongo.server
mongo_port=1530
mongo_user=mongoadmin
mongo_password=readONLYpass
mongo_db=testdb
我的spark-submit
看起来像:
spark-submit --master yarn --deploy-mode cluster --class mongo.MongoRead --jars /home/aiman/ojdbc-7.jar /home/aiman/app/jars/MongoRead-0.1-jar-with-dependencies.jar /home/aiman/config/my-file.properties
程式码片段:
public static void main(final String[] args) throws Exception
{
if(args.length<1){
System.out.println("Please provide properties file path");
System.exit(1);
}
System.out.println("Mongo Import Begins...");
Properties prop = new Properties();
InputStream in = null;
try{
in = new FileInputStream(args[0]);
prop.load(in);
}
catch(Exception e){
e.printStackTrace();
System.exit(1);
}
/*Reading the properties*/
String mongoServer = prop.getProperty("mongo_server");
String mongoPort = prop.getProperty("mongo_port");
String mongoUser = prop.getProperty("mongo_user");
....
...
String mongoAddress = "mongodb://"+mongoUser+":"+mongoPassword+"@"+mongoServer+":"+mongoPort+"/"+mongoDb+"."+tableNm;
SparkSession spark = SparkSession.builder()
.appName("MongoSparkRecordReader")
.config("spark.mongodb.input.uri", mongoAddress)
.config("spark.mongodb.output.uri", mongoAddress)
.getOrCreate();
JavaSparkContext jsc = new JavaSparkContext(spark.sparkContext());
...
..
}
请提出问题所在。 我是否以错误的方式读取属性文件,即找不到文件?
在--deploy-mode client
运行此命令可以解决此问题。 驱动程序将在存在属性文件的位置启动。 因此,文件正在读取,没有任何异常。
您应该通过“ --file /home/aiman/config/my-file.properties” spark-submit的参数传递本地文件,该参数会将文件分发到YARN启动的容器中,该容器将找到“ my-file”。属性”在其JVM的类路径中。 然后,您应该能够将其作为JVM的本地资源读取。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.