Как передать внешний ресурс yml / файл свойств при запуске задания на кластер? - PullRequest
0 голосов
/ 13 июня 2019

Я использую версию spark-sql 2.4.1, Джексон Джарс и Java 8.

В моей программе / работе с искрой я читаю несколько конфигураций / свойств из внешнего файла "condition.yml", который помещенв папке «resource» моего Java-проекта, как показано ниже:

ObjectMapper mapper = new ObjectMapper(new YAMLFactory());
        try {
            driverConfig = mapper.readValue(
                    Configuration.class.getClassLoader().getResourceAsStream("conditions.yml"),Configuration.class);

        }

Если я хочу передать файл «condition.yml» извне при отправке spark-job, как передать этот файл?где это должно быть размещено?

В моей программе я читаю из каталога "resouces", т.е. .getResourceAsStream ("condition.yml") ... если я передам этот файл свойств из spark-submit ... willотсюда работа берется из ресурсов или внешнего пути?

Если я хочу передать как внешний файл, мне нужно изменить код выше?

1 Ответ

1 голос
/ 14 июня 2019

вам нужно будет использовать --file путь к вашему файлу в команде spark-submit, чтобы иметь возможность передавать любые файлы.обратите внимание, что это синтаксис

для

 "--file /home/user/config/my-file.yml" 

, если он находится на hdfs, укажите путь hdfs

, это должно скопировать файл в classpath и ваш коддолжен быть в состоянии найти его из драйвера.

реализация чтения файла должна быть сделана с чем-то вроде этого

def readProperties(propertiesPath: String) = {

val url = getClass.getResource("/" + propertiesPath)
assert(url != null, s"Could not create URL to read $propertiesPath properties file")
val source = Source.fromURL(url)
val properties = new Properties
properties.load(source.bufferedReader)

properties
}

надеюсь, что это то, что вы ищете

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