重载方法值createDirectStream错误Spark Streaming

时间:2015-07-08 23:24:26

标签: scala apache-spark spark-streaming

拨打电话时

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的参数化版本时,我也遇到类似的错误。

知道问题是什么吗?

1 个答案:

答案 0 :(得分:1)

这是一个很长的信息,说主题必须是Set[String],而不是Set[Char]

我能看到解决这个问题的最佳方法是:

topic.map(_.toString).toSet

但是,如果您真的只有一个主题,那么只需执行Set(topic),因为上面将字符串拆分为一组单个字符。