Scala 卡夫卡和Spark流媒体简单生产者消费者
我不知道为什么生产者发送的数据没有送达消费者。 我正在cloudera虚拟机上工作。 我试图写一个简单的生产者消费者,生产者使用卡夫卡,消费者使用火花流 scala中的生产者代码:Scala 卡夫卡和Spark流媒体简单生产者消费者,scala,apache-kafka,spark-streaming,producer-consumer,Scala,Apache Kafka,Spark Streaming,Producer Consumer,我不知道为什么生产者发送的数据没有送达消费者。 我正在cloudera虚拟机上工作。 我试图写一个简单的生产者消费者,生产者使用卡夫卡,消费者使用火花流 scala中的生产者代码: import java.util.Properties import org.apache.kafka.clients.producer._ object kafkaProducer { def main(args: Array[String]) { val props = new Propertie
import java.util.Properties
import org.apache.kafka.clients.producer._
object kafkaProducer {
def main(args: Array[String]) {
val props = new Properties()
props.put("bootstrap.servers", "localhost:9092")
props.put("key.serializer", "org.apache.kafka.common.serialization.StringSerializer")
props.put("value.serializer", "org.apache.kafka.common.serialization.StringSerializer")
val producer = new KafkaProducer[String, String](props)
val TOPIC = "test"
for (i <- 1 to 50) {
Thread.sleep(1000) //every 1 second
val record = new ProducerRecord(TOPIC, generator.getID().toString(),generator.getRandomValue().toString())
producer.send(record)
}
producer.close()
}
}
通过更改消费代码行中的以下内容可以解决此问题:
val stream = KafkaUtils.createStream(ssc, "localhost:9092", "spark-streaming-consumer-group", Map("test" -> 1))
第二个参数应该是zookeeper端口,2181而不是9092,zookeeper将自动连接到Kafka端口9092
注意:在运行生产者和消费者之前,应先从终端启动Kafka。通过更改消费者代码行解决问题:
val stream = KafkaUtils.createStream(ssc, "localhost:9092", "spark-streaming-consumer-group", Map("test" -> 1))
第二个参数应该是zookeeper端口,2181而不是9092,zookeeper将自动连接到Kafka端口9092
注意:在运行生产者和消费者之前,应先从终端启动Kafka。我猜您是按顺序启动生产者和消费者???是的,我先启动消费者,然后在消费者运行时启动生产者。您是否已通过控制台消费者测试了生产者代码,并通过控制台生产者测试了消费者代码?Kafka-Spark集成可能会变得棘手…我已经通过一个控制台使用者测试了生产者代码,但还没有测试消费者代码。我想你应该按顺序启动生产者和消费者???是的,在使用者运行时,我先启动使用者,然后启动生产者。您是否通过控制台使用者测试了生产者代码,并通过控制台生产者测试了消费者代码?Kafka-Spark集成可能会变得棘手…我已经通过一个控制台使用者测试了生产者代码,但还没有测试使用者代码。