在pyspark rdd kafka中设置offsetRange()函数

时间:2016-10-26 11:45:55

标签: apache-spark apache-kafka

我成功整合了kafka和saprk。 我想从kafka发送流到spark.and现在我能够将流发送到spark.I想在RDD中使用这个流,所以我使用createRDD()函数来创建rdds。 但我在rdd只收到了kafka的一些按摩师。因为它取决于偏移范围。所以任何人都可以告诉我如何在kafka-spark CreateRDD()函数中设置offsetRange()。

2 个答案:

答案 0 :(得分:0)

只需在您的代码段中使用

即可
// Import dependencies and create kafka params as in Create Direct Stream

    val offsetRanges = Array(
      // topic, partition, inclusive starting offset, exclusive ending offset
      OffsetRange("test", 0, 0, 100),
      OffsetRange("test", 1, 0, 100)
    )

    val rdd = KafkaUtils.createRDD[String, String](sparkContext, kafkaParams, offsetRanges, PreferConsistent)

Spark Kafka Integration guide

根据文件: pyspark kafka streaming

首先使用

为kafka主题分区设置offsetranges
pyspark.streaming.kafka.OffsetRange(topic, partition, fromOffset, untilOffset)

初始化看起来像:

fromOffset = 0
untilOffset = 10
partition = 0
topic = 'topic'
offset = OffsetRange(topic, partition, fromOffset, untilOffset)
offsets = [offset]

然后你就可以创建你的RDD

kafkaRDD = KafkaUtils.createRDD(sc, kafkaParams, offsets)

答案 1 :(得分:0)

请找到用于Kafka偏移处理的代码段。

topicpartion = TopicAndPartition(var_topic_src_name, var_partition)
fromoffset = {topicpartion: var_offset}
print(fromoffset)

kvs = KafkaUtils.createDirectStream(ssc,\
                                   [var_topic_src_name],\
                                   var_kafka_parms_src,\
                                   valueDecoder=serializer.decode_message,\
                                   fromOffsets = fromoffset)