Kafka:Scala到Python的转换

Kafka:Scala到Python的转换,python,apache-spark,pyspark,apache-kafka,spark-streaming,Python,Apache Spark,Pyspark,Apache Kafka,Spark Streaming,提及: 这个例子有python版本吗?引用只有java等价物。我发现了一些相似之处 我可以将bootstrap.servers与bootstrap\u servers、key.serializer与key\u serializer、value.serializer与value\u serializer匹配,但无法匹配最后3个“group.id”、“auto.offset.reset”和 “enable.auto.commit” 您正在查看的Scala代码是针对消费者的。因此,您需要检查消费者的设

提及:

这个例子有python版本吗?引用只有java等价物。我发现了一些相似之处

我可以将bootstrap.servers与bootstrap\u servers、key.serializer与key\u serializer、value.serializer与value\u serializer匹配,但无法匹配最后3个“group.id”、“auto.offset.reset”和 “enable.auto.commit”


您正在查看的Scala代码是针对消费者的。因此,您需要检查消费者的设置,而不是制作人的设置

如果你看一下,你可以找到它们的等价物:

  • group.id
    group\u id
  • auto.offset.reset
    auto\u offset\u reset
  • 启用自动提交
    启用自动提交
还要注意,使用者具有反序列化程序而不是序列化程序,因此:

  • key.deserializer
    key\u deserializer
  • value.deserializer
    value\u deserializer
我在网站上发现了一些相似之处

不过,这不是Spark代码。Spark需要Java Kafka API的属性

,但如果您想使用Spark,这是0.8API

从pyspark.streaming.kafka导入KafkaUtils
#ssc=
directKafkaStream=KafkaUtils.createDirectStream(ssc,[topic],{“metadata.broker.list”:brokers})
import org.apache.kafka.clients.consumer.ConsumerRecord
import org.apache.kafka.common.serialization.StringDeserializer
import org.apache.spark.streaming.kafka010._
import org.apache.spark.streaming.kafka010.LocationStrategies.PreferConsistent
import org.apache.spark.streaming.kafka010.ConsumerStrategies.Subscribe

val kafkaParams = Map[String, Object](
  "bootstrap.servers" -> "localhost:9092,anotherhost:9092",
  "key.deserializer" -> classOf[StringDeserializer],
  "value.deserializer" -> classOf[StringDeserializer],
  "group.id" -> "use_a_separate_group_id_for_each_stream",
  "auto.offset.reset" -> "latest",
  "enable.auto.commit" -> (false: java.lang.Boolean)
)

val topics = Array("topicA", "topicB")
val stream = KafkaUtils.createDirectStream[String, String](
  streamingContext,
  PreferConsistent,
  Subscribe[String, String](topics, kafkaParams)
)

stream.map(record => (record.key, record.value))
from pyspark.streaming.kafka import KafkaUtils

# ssc = <get a StreamingContext>
directKafkaStream = KafkaUtils.createDirectStream(ssc, [topic], {"metadata.broker.list": brokers})