繁体   English   中英

spark-submit:传递java属性文件给出FileNotFoundException

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM