Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/visual-studio-2010/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scala Spark Streaming Direct Kafka API,OffsetRanges:如何处理首次运行_Scala_Apache Spark_Apache Kafka_Spark Streaming_Kafka Consumer Api - Fatal编程技术网

Scala Spark Streaming Direct Kafka API,OffsetRanges:如何处理首次运行

Scala Spark Streaming Direct Kafka API,OffsetRanges:如何处理首次运行,scala,apache-spark,apache-kafka,spark-streaming,kafka-consumer-api,Scala,Apache Spark,Apache Kafka,Spark Streaming,Kafka Consumer Api,我的spark流应用程序使用直接流方法读取卡夫卡的内容,而无需ZooKeeper的帮助。我希望处理失败,以便在我的应用程序中只遵循一次语义。我以下为参考。一切看起来都很完美,除了: val stream: InputDStream[(String,Long)] = KafkaUtils.createDirectStream[String, String, StringDecoder, StringDecoder, (String, Long)]( ssc, kafkaParams,

我的spark流应用程序使用直接流方法读取卡夫卡的内容,而无需ZooKeeper的帮助。我希望处理失败,以便在我的应用程序中只遵循一次语义。我以下为参考。一切看起来都很完美,除了:

val stream: InputDStream[(String,Long)] = KafkaUtils.createDirectStream[String, String, StringDecoder, StringDecoder, (String, Long)](
      ssc, kafkaParams, fromOffsets,
      // we're just going to count messages per topic, don't care about the contents, so convert each message to (topic, 1)
      (mmd: MessageAndMetadata[String, String]) => (mmd.topic, 1L))
在应用程序的第一次运行中,由于不会读取偏移量,因此要为
fromOffsets
Map参数传递什么值?我肯定错过了一些东西


谢谢并感谢您的帮助

根据主题存在的时间长短,第一个偏移量不一定是0L

我个人只是将适当的偏移量单独预插入数据库。然后,spark作业在启动时从数据库读取偏移量


spark-Kafka集成中的文件kafkacluster.scala具有一些方法,可以更轻松地查询Kafka以获取最早的可用偏移量。那个文件是私人的,但已在最新的spark code中公开。

第一个偏移量是
0L
——您希望将其用作每个
TopicAndPartition
fromOffset
,偏移量永远不小于0L——因此,如果始终使用0L,即使开始是32L或更高,它也将始终从开始whatever@CodyKoeninger对甚至我也决定在第一次运行时手动插入偏移。仍在研究是否有更好的方法,因为对于每个主题的每个分区,我必须手动执行以下操作:(@DavidGriffin否,我尝试了0L。它给了我OffsetAutofrange异常。由于偏移量不再可用,根据保留期,我猜它不会工作。您可以始终使用偏移量提取并在开始之前获取值。@Cody如果启用,偏移量不会存储在检查点目录中吗?