【Kafka】消息的产生与消费

Kafka

Kafka是一种高吞吐量的分布式发布订阅消息系统。

相关概念:

  • Broker:Kafka集群上的服务器

  • Topic:发布到集群上的消息类别

  • Partition:物理上的分区

  • Producer:负责发布消息到集群

  • Consumer:消息消费者

Kafka配置

创建一个主题

$ bin/kafka-topics.sh --create --topic quickstart-events --bootstrap-server localhost:9092

查看当前主题

$ bin/kafka-topics.sh --describe --topic quickstart-events --bootstrap-server localhost:9092
Topic: quickstart-events    TopicId: Pwr-0JOyQKOr9qBXlGUTuA    PartitionCount: 1    ReplicationFactor: 1    Configs:
    Topic: quickstart-events    Partition: 0    Leader: 0    Replicas: 0    Isr: 0

查看所有主题

$ bin/kafka-topics.sh --bootstrap-server localhost:9092 --list

将事件写入主题

$ ./bin/kafka-console-producer.sh --topic quickstart-events --bootstrap-server localhost:9092
>This is my first event
>This is my second event

阅读事件

$ ./bin/kafka-console-consumer.sh --topic quickstart-events --from-beginning --bootstrap-server localhost:9092
This is my first event
This is my second event

使用Spark Streaming消费Kafka数据

package ac.sict.reid.leo.streaming

import org.apache.kafka.clients.consumer.ConsumerConfig
import org.apache.spark.SparkConf
import org.apache.spark.streaming.kafka010.{ConsumerStrategies, KafkaUtils, LocationStrategies}
import org.apache.spark.streaming.{Seconds, StreamingContext}


object SparkStreaming04_Kafka {
  def main(args: Array[String]): Unit = {
    val conf = new SparkConf().setMaster("local[*]").setAppName("SparkStreaming")
    val ssc = new StreamingContext(conf = conf, batchDuration = Seconds(3))

    val para = Map[String, Object](
      ConsumerConfig.BOOTSTRAP_SERVERS_CONFIG -> "localhost:9092",
      ConsumerConfig.GROUP_ID_CONFIG -> "quickstart-events",
      "key.deserializer" -> "org.apache.kafka.common.serialization.StringDeserializer",
      "value.deserializer" -> "org.apache.kafka.common.serialization.StringDeserializer",
    )

    val consumerRecord = KafkaUtils.createDirectStream[String, String](
      ssc, 
      LocationStrategies.PreferConsistent, 
      ConsumerStrategies.Subscribe[String, String](Set("quickstart-events"), kafkaParams = para)
    )
    consumerRecord.map(_.value()).print()

    ssc.start()
    ssc.awaitTermination()
  }

}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值