Bonjour, j'essaie de lire la configuration de mon fichier de configuration dans spark / scala
.
J'ai écrit le code ci-dessous.
Exception in thread "main" com.typesafe.config.ConfigException$Missing: No configuration setting found for key 'parameters' Note:-I'm genetarting Jar using Maven and using HDP 3.X
Voici mon fichier application.conf
( src / main / resources / application.conf
)
spark-submit \ > --conf "spark.executor.extraClassPath=-Dconfig.file=application.conf"\ > --verbose \ > --class classjarname \ > project_jar > /path/config-1.2.0.jar \ > /path/application.conf
et en utilisant la commande Spark-submit
ci-dessous:
parameters { spark-hive { url = """jdbc://xxxxxxxxxxxx""", dbname = """bdname""" } }
mais en obtenant l'erreur ci-dessous.
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()
3 Réponses :
Vous pouvez imprimer la valeur réelle de args (0)
pour voir où se réfère le chemin (complet). Cela a fonctionné pour moi:
com.typesafe.config.ConfigFactory.parseFile(new java.io.File(args(0)))
Remarque supplémentaire:
project_jar
dans votre commande d'envoi hive-url
car le code lors de la création de SparkSession ne correspond pas à votre configuration. project_jar -> Jar File (code Jar (généré à partir de maven Eclipse). hive-url: -Oui C'était une faute de frappe J'ai mis à jour ceci
quel est alors le /path/config-1.2.0.jar
?
J'ai ajouté ce jar en utilisant pom.xml dans eclipse mais cela donnait toujours une erreur, alors j'ai placé cet emplacement quelque part `` MyHDFS '' et en donnant ce chemin.J'ai tout mon fichier jar et application.conf dans le même dossier à HDFS
'/path/config-1.2.0.jar' ce Jar est pour "com.typesafe.config".
Exception dans le thread "main" com.typesafe.config.ConfigException $ Missing: Aucun paramètre de configuration trouvé pour les paramètres de la clé indique qu'il ne peut pas charger les paramètres de la clé. C'est l'entrée de votre fichier de configuration qui pointe vers votre fichier de configuration qui n'est pas correctement chargé ou n'est pas analysé correctement. Je suggérerais donc de lire le fichier, puis d'essayer avec l'étape suivante, c'est-à-dire en utilisant ces paramètres pour créer la Sparksession. Essayez ci-dessous de lire le contenu du fichier s'il est chargé correctement
import scala.io.Source import com.typesafe.config.ConfigFactory val filename = ConfigFactory.load(args(0)) for (line <- Source.fromFile(filename).getLines) { println(line) }
Je veux vous montrer un exemple simple d'utilisation de la bibliothèque com.typesafe.config
.
Voici mon application.properties
dans le répertoire des ressources.
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 })
et voici le code pour obtenir les propriétés, args (0) == appareil
## 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
Exception dans le thread "main" com.typesafe.config.ConfigException $ Missing: Aucun paramètre de configuration trouvé pour les paramètres de la clé indique qu'il ne peut pas charger les paramètres de la clé. C'est l'entrée de votre fichier de configuration qui pointe vers votre fichier de configuration qui n'est pas correctement chargé ou n'est pas analysé correctement. Je suggérerais donc de lire le fichier, puis d'essayer avec l'étape suivante, c'est-à-dire en utilisant ces paramètres pour créer la Sparksession.