Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache spark 无法找到具有Kafka Spark集成的集合([topic,0])的引线_Apache Spark_Ssl_Apache Kafka_Spark Streaming - Fatal编程技术网

Apache spark 无法找到具有Kafka Spark集成的集合([topic,0])的引线

Apache spark 无法找到具有Kafka Spark集成的集合([topic,0])的引线,apache-spark,ssl,apache-kafka,spark-streaming,Apache Spark,Ssl,Apache Kafka,Spark Streaming,我正在尝试使用SSL进行卡夫卡火花集成。我已经在启用SSL的情况下测试了Kafka,它在示例消费者和生产者中完全正常工作 此外,我还尝试了Spark-Kafka的集成,当Spark作业中没有SSL时,它也可以正常工作 现在,当我在spark作业中启用SSL时,我遇到了一个异常,集成不起作用 我在spark作业中启用SSL所做的更改仅包括以下代码行: sparkConf.set(“security.protocol”、“SSL”); sparkConf.set(“ssl.truststore.lo

我正在尝试使用SSL进行卡夫卡火花集成。我已经在启用SSL的情况下测试了Kafka,它在示例消费者和生产者中完全正常工作

此外,我还尝试了Spark-Kafka的集成,当Spark作业中没有SSL时,它也可以正常工作

现在,当我在spark作业中启用SSL时,我遇到了一个异常,集成不起作用

我在spark作业中启用SSL所做的更改仅包括以下代码行:

sparkConf.set(“security.protocol”、“SSL”);
sparkConf.set(“ssl.truststore.location”、“PATH/truststore.jks”);
sparkConf.set(“ssl.truststore.password”、“passwrd”);
sparkConf.set(“ssl.keystore.location”、“PATH/keystore.jks”);
sparkConf.set(“ssl.keystore.password”、“kstore”);
sparkConf.set(“ssl.key.password”、“keypass”);
创建流媒体上下文时,会传递此sparkConf

JavaStreamingContext jssc=新的JavaStreamingContext(sparkConf,新的持续时间(10000));
当我运行作业时,得到的错误如下:

17/05/24 18:16:39警告消费者FetcherManager$LeaderFinderThread:[test-consumer-group_bmj-cluster-1495664195784-5f49cbd0-leader-finder-thread],未能找到集合的引线([bell,0])
java.lang.NullPointerException
位于org.apache.kafka.common.utils.utils.formatAddress(utils.java:312)
位于kafka.cluster.Broker.connectionString(Broker.scala:62)
位于kafka.client.ClientUtils$$anonfun$fetchTopicMetadata$5.apply(ClientUtils.scala:89)
位于kafka.client.ClientUtils$$anonfun$fetchTopicMetadata$5.apply(ClientUtils.scala:89)
在scala.collection.TraversableLike$$anonfun$map$1.apply处(TraversableLike.scala:234)
在scala.collection.TraversableLike$$anonfun$map$1.apply处(TraversableLike.scala:234)
位于scala.collection.mutable.resizeblearray$class.foreach(resizeblearray.scala:59)
位于scala.collection.mutable.ArrayBuffer.foreach(ArrayBuffer.scala:48)
位于scala.collection.TraversableLike$class.map(TraversableLike.scala:234)
位于scala.collection.AbstractTraversable.map(Traversable.scala:104)
位于kafka.client.ClientUtils$.fetchTopicMetadata(ClientUtils.scala:89)
在kafka.consumer.ConsumerFetcherManager$LeaderFinderThread.doWork(ConsumerFetcherManager.scala:66)
在kafka.utils.ShutdownableThread.run(ShutdownableThread.scala:60)
卡夫卡版本-2.11-0.10.2.0
Spark版本-2.1.0
Scala版本-2.11.8

流媒体库


org.apache.spark
spark-U 2.11
2.1.0
org.apache.spark
spark-streaming-kafka-0-8_2.11
2.1.0

关于克服这个问题,有什么帮助吗?

通过深入研究,我能够找出我遇到的问题

首先,为了启用SSL,需要将与SSL相关的、kafka参数传递到KafkaUtils.createDirectStream()方法和NOTJavaStreamingContext的sparkConf

然后,给定的SSL参数:

我使用的spark kafka流媒体版本“0-8\u 2.11”不支持,因此我不得不将其更改为版本“0-10\u 2.11”

作为回报,它对方法进行了完整的API更改:KafkaUtils.createDirectStream(),该方法用于连接到Kafka

文档中给出了如何使用它的说明

因此,我连接到卡夫卡的最后一段代码如下所示:

最终JavaInputDStream流=
KafkaUtils.createDirectStream(
javaStreamingContext,
LocationStrategies.PreferConsistent(),
ConsumerStrategies.Subscribe(topicsCollection,kafkaParams)
);
使用kafka params作为包含所有SSL参数的映射

谢谢
沙比尔

"security.protocol", "SSL"
"ssl.truststore.location", "PATH/truststore.jks"
"ssl.truststore.password", "passwrd"
"ssl.keystore.location", "PATH/keystore.jks"
"ssl.keystore.password", "kstore"
"ssl.key.password", "keypass"