Kafka使用者从偏移量开始直到偏移量已知时从主题读取数据

时间:2019-02-20 11:02:59

标签: apache-spark hive apache-kafka spark-streaming kafka-consumer-api

我可以知道kafka消费者是否可以在知道某个主题的分区偏移量之时及之前读取特定记录。

用例是在我的Spark Streaming应用程序中,少数批次未处理(插入到表中),在这种情况下,我只想读取丢失的数据。我正在存储主题详细信息,即分区和偏移量。

有人可以让我知道在知道偏移量的情况下从主题中阅读是否可以实现。

1 个答案:

答案 0 :(得分:0)

如果要处理一组消息,这是由Spark流中的开始和结束偏移量定义的,则可以使用以下代码:

val kafkaParams = Map[String, Object](
  "bootstrap.servers" -> "localhost:9092",
  "key.deserializer" -> classOf[StringDeserializer],
  "value.deserializer" -> classOf[StringDeserializer],
  "group.id" -> "groupId"
)
val offsetRanges = Array(
  OffsetRange("input", 0, 2, 4) // <-- topic name, partition number, fromOffset, untilOffset
)

val sparkContext: SparkContext = ???
val rdd = KafkaUtils.createRDD(sparkContext, kafkaParams.asJava, offsetRanges, PreferConsistent)
// other proccessing and saving

可以找到有关集成Spark Streaming和Kafka的更多详细信息:https://spark.apache.org/docs/2.4.0/streaming-kafka-0-10-integration.html