我希望只使用kafka读取spark spark中的最新消息,但它也会获取过去的数据
如何在KafkaUtil中为spark设置auto.offset.reset
JavaPairReceiverInputDStream<String, String> messages =
KafkaUtils.createStream(jssc, args[0], args[1], topicMap);
如何将conf设置为仅提取当前消息。请举一些例子。
先谢谢,还有另一个thread
但还不够,请帮助我。提前谢谢。
答案 0 :(得分:7)
您需要在KafkaUtils对象中使用此方法:
def createStream[K, V, U <: Decoder[_], T <: Decoder[_]](
jssc: JavaStreamingContext,
keyTypeClass: Class[K],
valueTypeClass: Class[V],
keyDecoderClass: Class[U],
valueDecoderClass: Class[T],
kafkaParams: JMap[String, String],
topics: JMap[String, JInt],
storageLevel: StorageLevel
)
根据Spark版本,您不能使用java。有bug。
如果您使用的是Spark 1.1.0,则需要在 kafkaParams 参数中添加此属性:
&#34; auto.offset.reset&#34;,&#34;最大&#34;
另一种解决方法是随机生成 groupId 前缀,但这很糟糕。