bigdata_kafka与streaming

本文介绍了Kafka的Producer和ConsumerAPI使用,包括Java和Scala版本的实现。接着讨论了Kafka与Spark Streaming的结合,对比了基于Receiver和Direct方式的优缺点。Receiver方式简单但可能导致数据丢失,而Direct方式效率高但需要自行管理offset。
摘要由CSDN通过智能技术生成

  一丶Kafka应用  

  鉴于kafka在实际使用时,绝大多数应用场景均为Producer和Consumer的API配合使用,故在此只介绍这两种API操作方法,其它的Connector和Streams还有admin可以视自身情况自行学习。

   1.java版

  • 实现步骤

    • 创建maven项目(done)

    • 加入kafka依赖

    • producer push message实现

    • consumer pull message实现

    • 效果测试

  • 加入依赖

        

<dependency>

        <groupId>org.apache.kafka</groupId>

        <artifactId>kafka-clients</artifactId>

        <version>2.0.0</version>

</dependency>

<!--kafka的日志组件依赖包 -->

<dependency>

        <groupId>org.slf4j</groupId>

        <artifactId>slf4j-simple</artifactId>

        <version>1.7.25</version>

</dependency>

具体代码:

producer push message

import java.util.Properties;
import org.apache.kafka.clients.producer.KafkaProducer;
import org.apache.kafka.clients.producer.ProducerConfig;
import org.apache.kafka.clients.producer.ProducerRecord;
importorg.apache.kafka.common.serialization.StringSerializer;
/**
 * kafka测试工具类
 * @author tianliang
 */
public class KafkaProducerUtil {
   // 生产者抽象对象
   public KafkaProducer<String, String> producer;
   // 传入brokerList,以hostname:port的方式,多个之间用,号隔开
   public KafkaProducerUtil(String brokerList) {
      Properties props = new Properties();
      // 服务器ip:端口号,集群用逗号分隔
      props.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, brokerList);
      // key序列化指定类
      props.put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG,
           StringSerializer.class.getName());
      // value序列化指定类
      props.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG,
           StringSerializer.class.getName());
      // 生产者对象
      producer = new KafkaProducer<String, String>(props);
   }
   
   public void close(){
      this.producer.close();
   }
   public static void main(String[] args) {
      // 初始化broker列表
      String brokerList = "cluster1.hadoop:6667,cluster0.hadoop:6667";
      String topic="TestKafka";
      // 初始化生产者工具类
      KafkaProducerUtil kafkaProducerUtil = new KafkaProducerUtil(brokerList);
      // 向test_topic发送hello, kafka
      kafkaProducerUtil.producer.send(new ProducerRecord<String, String>(
           topic, "hello,李英杰!"));
      kafkaProducerUtil.close();
      
      System.out.println("done!");
   }
}

comsumer push message实现

import java.util.Arrays;
import java.util.Properties;
import org.apache.kafka.clients.consumer.ConsumerConfig;
import org.apache.kafk
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值