如何在KafkaUtils.createDirectStream()中定义参数

时间:2016-06-06 15:09:48

标签: scala apache-kafka spark-streaming

我是spark和kafka的新手,我希望将json格式的数据从kafka转发到spark中。我的问题是定义数据映射以及如何定义KafkaUtils.createDirectStream()内部的参数

val ssc = new StreamingContext(sparkConfig, Seconds(10))
case class dataMap (number: Int, address: String, product: String, store: String, seller : String)
val messages = KafkaUtils.createDirectStream[ Int, String, String, String, String](ssc, kafkaParams, topics).map(m => m.as[dataMap])

当我使用上面的代码时,我收到以下错误:

error: type arguments [Int,String,String,String,String] conform to the bounds  of none of the overloaded alternatives of value createDirectStream

P.S:我已经以正确的格式定义了kafkaParams和主题。

1 个答案:

答案 0 :(得分:1)

我相信你想要这样的东西:

val messages = KafkaUtils.createDirectStream[String, String, StringDecoder, StringDecoder, dataMap](...)

请注意,这将消除您的错误,但您还有更多工作要做。所有这一切都是为了获得原始的JSON String。然后,您必须将String转换为case class。老实说,这是一个单独的问题,与Apache Spark无关,甚至与Kafka无关。您可以在此处找到针对该问题的几种不同解决方案:How to read json data using scala from kafka topic in apache spark