拨打电话时
val kafkaParams: Map[String, String] =...
var topic: String = ..
val input2 = KafkaUtils.createDirectStream[String, String, StringDecoder, StringDecoder](ssc, kafkaParams, topic.toSet)
我收到错误:
使用替代方法重载方法值createDirectStream:(jssc: org.apache.spark.streaming.api.java.JavaStreamingContext,keyClass: Class [String],valueClass:Class [String],keyDecoderClass: 类[kafka.serializer.StringDecoder],valueDecoderClass: 类[kafka.serializer.StringDecoder],kafkaParams: java.util.Map [字符串,字符串]主题: java.util.Set中[字符串])org.apache.spark.streaming.api.java.JavaPairInputDStream [字符串,字符串] (ssc:org.apache.spark.streaming.StreamingContext,kafkaParams: scala.collection.immutable.Map [字符串,字符串]主题: scala.collection.immutable.Set [String])(隐含证据$ 19: scala.reflect.ClassTag [String],隐含证据$ 20: scala.reflect.ClassTag [String],隐式证据$ 21: scala.reflect.ClassTag [kafka.serializer.StringDecoder],隐式 证据$ 22: scala.reflect.ClassTag [kafka.serializer.StringDecoder])org.apache.spark.streaming.dstream.InputDStream [(字符串, String)]无法应用 (org.apache.spark.streaming.StreamingContext, scala.collection.immutable.Map [字符串,字符串], scala.collection.immutable.Set [字符])
调用createStream的参数化版本时,我也遇到类似的错误。
知道问题是什么吗?
答案 0 :(得分:1)
这是一个很长的信息,说主题必须是Set[String]
,而不是Set[Char]
。
我能看到解决这个问题的最佳方法是:
topic.map(_.toString).toSet
但是,如果您真的只有一个主题,那么只需执行Set(topic)
,因为上面将字符串拆分为一组单个字符。