【问题标题】:How to set Kafka parameters from a properties file?如何从属性文件设置 Kafka 参数?
【发布时间】:2017-11-08 17:07:30
【问题描述】:

我目前正在做的事情如下:

val topic = "mytopic"
val zkhosts = "localhost"
val zkports = "2181"

在我的代码中设置它然后将其发送到 kafkastream 函数可以工作,但我想从 .properties 文件中读取它。有没有可能的解决方案?

【问题讨论】:

    标签: apache-spark apache-kafka spark-streaming


    【解决方案1】:

    鉴于此属性文件位于/tmp/sample.properties

    kafka.topic = "mytopic"
    kafka.zkhost = "localhost"
    kafka.zkports = 2191
    

    我们可以使用普通的 java Property API 来加载属性:

    import java.io.FileReader
    val configFile = new java.io.File("/tmp/sample.properties")
    val reader = new FileReader(configFile)
    val props = new Properties()
    props.load(reader)
    reader.close()
    

    您也可以像在任何其他程序上一样使用您喜欢的配置库来加载属性文件。

    例如,您可以使用流行的typesafe config lib。 Scala 有很多包装器,但在其原始形式中,您可以执行以下操作:

    import com.typesafe.config.ConfigFactory
    val configFile = new java.io.File("/tmp/sample.properties")
    val kafkaConfig = ConfigFactory.parseFile(configFile)
    
    import java.util.Properties
    val kafkaProperties = new Properties()
    kafkaProperties.put("zookeeper.hosts", kafkaConfig.getString("kafka.zkhost"))
    kafkaProperties.put("zookeeper.port", kafkaConfig.getInt("kafka.zkports"):java.lang.Integer)
    kafkaProperties.put("kafka.topic", kafkaConfig.getString("kafka.topic"))
    

    (有很多方法可以使它变得美观和紧凑。这里我使用最常见的形式)

    【讨论】:

    • @HIRANGALA 没问题。考虑接受答案以表明您的问题已得到解答。
    猜你喜欢
    • 2015-05-21
    • 2018-09-05
    • 1970-01-01
    • 2017-02-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多