spark-submit: передача файла свойств Java дает исключение FileNotFoundException - PullRequest
0 голосов
/ 26 января 2019

У меня есть искровое задание, которое я запускаю в режиме yarn cluster.Мне нужно передать специфический для приложения файл свойств Java.Я делаю это Java FileInputStream.
Но я сталкиваюсь с FileNotFoundException для /home/aiman/config/my-file.properties

Мой файл свойств 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());
        ...
        ..

}

Пожалуйста, подскажите, что происходит не так.Я неправильно читаю файл свойств, он не находит файл?

Ответы [ 2 ]

0 голосов
/ 04 февраля 2019

Вы должны передать локальный файл через аргумент spark-submit "--file /home/aiman/config/my-file.properties", который распространит файл в контейнеры, запущенные YARN, которые найдут "my -file.properties "в пути к классам их JVM. После этого вы сможете прочитать его как локальный ресурс JVM.

0 голосов
/ 04 февраля 2019

Запуск этого в --deploy-mode client решает проблему.Драйвер запускается там, где присутствует файл свойств.Итак, файл читается и не получает никаких исключений.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...