kafka新的producer api使用

原创 2015年07月10日 15:17:52
package com.hupu.dace.spark.streaming

import java.util.Properties

import com.hupu.dace.hbaserestful.util.HdfsUtil
import DaceFunctions._
import org.apache.kafka.clients.producer.{KafkaProducer, ProducerConfig, ProducerRecord}

/**
 * Created by xiaojun on 2015/5/20.
 */
object PalPVUVProducer {
  def main(args: Array[String]) {
    if (args.length < 2) {
      System.err.println("Usage: PVUVProducer <metadataBrokerList> <topic> ")
      System.exit(1)
    }

    val Array(brokers, topicName, _*) = args

    // Zookeper connection properties
    val props = new Properties()
    (2 until args.length).foreach(i => {
      val pieces = args(i).split("=")
      if (pieces.length != 2) throw new IllegalArgumentException("Invalid property: " + args(i))
      props.put(pieces(0), pieces(1))
    })

    props.put("metadata.broker.list", brokers)
    //props.put("serializer.class", "kafka.serializer.StringEncoder")
    props.put("serializer.class", "org.apache.kafka.common.serialization.ByteArraySerializer")
    //props.put("bootstrap.servers", brokers)
    props.put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG, "org.apache.kafka.common.serialization.ByteArraySerializer")
    props.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG, "org.apache.kafka.common.serialization.ByteArraySerializer")
    val producer: KafkaProducer[Array[Byte], Array[Byte]] = new KafkaProducer[Array[Byte], Array[Byte]](props)
    val lines = HdfsUtil.getString("/user/hive/warehouse/rd_e_pal/dt=20150312/hr=03/rd_e_pal.20150312.03-230").split("\n").filter(line => {
      val l = line.split("\001")
      l.length >= 31 && l(4).matches( """\d+""") && filter(l(5)) == "i" && filter(l(11)) != "\\N" && filter(l(11)) != null
    })
    val lines2 = HdfsUtil.getString("/user/hive/warehouse/rd_e_pal/dt=20150312/hr=03/rd_e_pal.20150312.03-231").split("\n").filter(line => {
      val l = line.split("\001")
      l.length >= 31 && l(4).matches( """\d+""") && filter(l(5)) == "i" && filter(l(11)) != "\\N" && filter(l(11)) != null
    })
    val start = System.currentTimeMillis()
    (1 to 1).foreach(n => {
      lines.foreach(line => {
        val record = new ProducerRecord[Array[Byte], Array[Byte]](topicName, line.getBytes())
        producer.send(record)
      })
      lines2.foreach(line => {
        val record = new ProducerRecord[Array[Byte], Array[Byte]](topicName, line.getBytes())
        producer.send(record)
      })
    })
    println("---------cost:" + (System.currentTimeMillis() - start))
    producer.close()

  }
}

kafka 8.2.1新版API是异步写的,效率非常高.

参数传递:

 n1:9092,n2:9092,n3:9092 test-rep-one buffer.memory=67108864 acks=1 bootstrap.servers=n1:9092,n2:9092,n3:9092 buffer.memory=67108864 batch.size=8196 



kafka producer的serializer

今天遇到问题,kafka的producer是的类型,却始终报错, [2015-01-14 15:10:22,837] ERROR Error serializing message for topic...
  • u014373825
  • u014373825
  • 2015年01月14日 16:04
  • 6997

Kafka学习整理七(producer和consumer编程实践)

Kafka学习整理七(producer和consumer编程实践)
  • LOUISLIAOXH
  • LOUISLIAOXH
  • 2016年06月03日 15:59
  • 28424

Kafka源码分析之KafkaProducer发送数据send()方法

KafkaProducer是Kafka中Producer的一种实现,其主要功能就是发送消息给Kafka中broker。其send()方法如下: /** * Asynchronous...
  • lipeng_bigdata
  • lipeng_bigdata
  • 2016年04月10日 14:51
  • 9205

Kafka源码学习笔记--KafkaProducer

先来看看一段简单的KafkaProducer应用的代码: import org.apache.kafka.clients.producer.*; import org.junit.Test; im...
  • Del_Zhu
  • Del_Zhu
  • 2016年12月03日 16:54
  • 2987

Kafka Producer

本文采用Kafka 0.8.2版本 OverviewProducer的作用生成数据(消息),并将其发送到Kafka集群(brokers)中。将消息发送给谁Producer在向Kafka集群发送消息时...
  • u011491148
  • u011491148
  • 2015年06月30日 13:40
  • 3179

kafka producer 中partition 使用方式

为了更好的实现负载均衡和消息的顺序性,kafka的producer在分发消息时可以通过分发策略发送给指定的partition。实现分发的程序是需要制定消息的key值,而kafka通过key进行策略分发...
  • xuguokun1986
  • xuguokun1986
  • 2015年10月27日 08:47
  • 1839

kafka_2.11-0.8.2.1生产者producer的Java实现

转载自:http://blog.csdn.net/ch717828/article/details/50818261 1. 开启Kafka Consumer 首先选择集群的一台机器,打开kafka...
  • chongxin1
  • chongxin1
  • 2017年08月28日 11:20
  • 558

kafka kafka-clients 0.10.0.0 API

demo 结构 package com.zybros; import java.util.ArrayList; import java.util.Arrays; import java.util.L...
  • stonexmx
  • stonexmx
  • 2016年08月26日 10:59
  • 5149

kafka-clients 0.10 消息生产者

package tuyou.kafka.producer; import java.util.Properties; import org.apache.kafka.clients.produce...
  • ty497122758
  • ty497122758
  • 2017年06月01日 11:32
  • 399

Kafka:Producer Config 配置

Producer Configs 配置 属性 描述 类型 默认值 bootstrap.servers 用于建立与kafka集群的连接,这个list仅仅影响用于初始化的hosts,...
  • jiecxy
  • jiecxy
  • 2016年11月29日 16:57
  • 5140
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:kafka新的producer api使用
举报原因:
原因补充:

(最多只允许输入30个字)