Не найдена конфигурация для ключа при чтении файла конфигурации в spark / Scala - PullRequest
0 голосов
/ 06 апреля 2020

Привет. Я пытаюсь прочитать конфигурацию из моего файла конфигурации в spark / scala. Ниже приведен код.

val conf = com.typesafe.config.ConfigFactory.load(args(0))
var url=conf.getString("parameters.spark-hive.url")
var db=conf.getString("parameters.spark-hive.dbname")
val sparksession = SparkSession.builder()
  .appName("myapp")
  .config("spark.sql.hive.hiveserver2.jdbc.url",url)
  .enableHiveSupport()
  .getOrCreate()

Ниже приведен мой файл application.conf (src / main / resources / application.conf)

parameters {
  spark-hive {
  url = """jdbc://xxxxxxxxxxxx""",
  dbname =   """bdname"""
  }
}

с использованием команды Below Spark-submit :

spark-submit \
> --conf "spark.executor.extraClassPath=-Dconfig.file=application.conf"\
> --verbose \
> --class classjarname \
> project_jar
> /path/config-1.2.0.jar \
> /path/application.conf

, но получается ошибка ниже.

Исключение в потоке "main" com.typesafe.config.ConfigException $ Отсутствует: Не найден параметр конфигурации для ключа 'параметры' Примечание: -I Genetarting Jar с помощью Maven и HDP 3.X

Ответы [ 3 ]

0 голосов
/ 06 апреля 2020

Исключение в потоке "main" com.typesafe.config.ConfigException $ Отсутствует: Параметр конфигурации не найден для параметров ключа 'указывает, что он не может загрузить параметры ключа. Это запись вашего conf-файла, которая указывает на то, что ваш конфигурационный файл загружен неправильно или не анализируется должным образом. Поэтому я бы предложил прочитать файл, а затем попробовать перейти к следующему шагу, т.е. использовать эти параметры для создания Sparksession. Попробуйте ниже, чтобы прочитать содержимое файла, если загружен правильно

import scala.io.Source
import com.typesafe.config.ConfigFactory

val filename = ConfigFactory.load(args(0))
for (line <- Source.fromFile(filename).getLines) {
println(line)
}
0 голосов
/ 07 апреля 2020

Я хочу показать вам простой пример использования библиотеки com.typesafe.config

Это mi application.properties в каталоге ресурсов.

## Structured Streaming device
device.zookeeper = quickstart.cloudera:2181
device.bootstrap.server = quickstart.cloudera:9092
device.topic = device



device.execution.mode = local

device.data.host = quickstart.cloudera

device.data.port = 44444

## HBase

device.zookeeper.quorum = quickstart.cloudera
device.zookeeper.port = 2181
device.window = 1

folder structure directory

и это код для получения свойств, args (0) == device

  def main(args: Array[String]): Unit = {
    val conf = ConfigFactory.load // get Confs
    val envProps: Config = conf.getConfig(args(0)) // args(0) == device
    val sparkConf = new SparkConf().setMaster(envProps.getString("execution.mode")).setAppName("Device Signal") // get execution.mode conf
    val streamingContext = new StreamingContext(sparkConf, Seconds(envProps.getInt("window"))) // get window conf
    streamingContext.sparkContext.setLogLevel("ERROR")
    val broadcastConfig = streamingContext.sparkContext.broadcast(envProps)
    val topicsSet = Set(envProps.getString("topic")) // get topic conf
    val kafkaParams = Map[String, Object](
      "bootstrap.servers" -> envProps.getString("bootstrap.server"), // get bootstrap.server conf
      "key.deserializer" -> classOf[StringDeserializer],
      "value.deserializer" -> classOf[StringDeserializer],
      "group.id" -> "1",
      "auto.offset.reset" -> "latest",
      "enable.auto.commit" -> (false: java.lang.Boolean)
    )
    val logData: DStream[String] = KafkaUtils.createDirectStream[String, String](
      streamingContext,
      PreferConsistent,
      Subscribe[String, String](topicsSet, kafkaParams)
    ).map(record =>{
      record.value
    })

Надеюсь, это может быть печально.

Привет.

0 голосов
/ 06 апреля 2020

Вы можете распечатать фактическое значение args(0), чтобы увидеть, куда относится (полный) путь. Это сработало для меня:

com.typesafe.config.ConfigFactory.parseFile(new java.io.File(args(0)))

Дополнительное замечание:

  • не уверен, что означает project_jar в вашей команде отправки
  • , кажется, опечатка с hive-url, поскольку код при создании SparkSession не соответствует вашей конфигурации.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...