python操作kafka

Python高效操作Kafka实战指南 本文介绍了Python操作Kafka的高效实践,重点展示confluent-kafka和kafka-python两种库的使用方法。主要内容包括:基础消息发送(同步/异步)、批量处理、带Key发送、高性能配置等核心功能;以及消息头、时间戳、自定义分区、压缩等高级特性;同时涵盖事务消息、重试机制、拦截器等企业级功能。文章还详细说明了Avro数据格式在Python中的序列化/反序列化操作,包括Schema定义、文件读写、Kafka集成等场景。最后简要介绍了Kafka的核心架构原理,包括分区副本机制、高性能设计、消 阅读详情
python操作kafka

kafka简介(摘自百度百科)
简介:
afka是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者规模的网站中的所有动作流数据。 这种动作(网页浏览,搜索和其他用户的行动)是在现代网络上的许多社会功能的一个关键因素。 这些数据通常是由于吞吐量的要求而通过处理日志和日志聚合来解决。 对于像Hadoop的一样的日志数据和离线分析系统,但又要求实时处理的限制,这是一个可行的解决方案。Kafka的目的是通过Hadoop的并行加载机制来统一线上和离线的消息处理,也是为了通过集群来提供实时的消费。

特性:
通过O(1)的磁盘数据结构提供消息的持久化,这种结构对于即使数以TB的消息存储也能够保持长时间的稳定性能。
高吞吐量[2]  :即使是非常普通的硬件Kafka也可以支持每秒数百万[2]  的消息
支持通过Kafka服务器和消费机集群来分区消息
支持Hadoop并行数据加载

术语:
Broker
Kafka集群包含一个或多个服务器,这种服务器被称为broker
Topic
每条发布到Kafka集群的消息都有一个类别,这个类别被称为Topic。(物理上不同Topic的消息分开存储,逻辑上一个Topic的消息虽然保存于一个或多个broker上但用户只需指定消息的Topic即可生产或消费数据而不必关心数据存于何处)
Partition
Partition是物理上的概念,每个Topic包含一个或多个Partition.
Producer
负责发布消息到Kafka broker
Consumer
消息消费者,向Kafka broker读取消息的客户端。
Consumer Group
每个Consumer属于一个特定的Consumer Group(可为每个Consumer指定group name,若不指定group name则属于默认的group)。


一、安装
在pypi.python.org有很多关于操作kafka的组件,我们选择weight最高的kafka 1.3.5
1、有网的情况下执行如下命令安装:
pip install kafka
easy_install kafka

2、无网的情况下把源码下载下来,上传到需要安装的主机
压缩包:kafka-1.3.5.tar.gz
解压: tar xvf kafka-1.3.5.tar.gz
执行安装命令:   cd kafka-1.3.5   
               python setup.py install
               
如安装报依赖错误,需要把依赖的组件也下载下来,然后进行安装,同样的方法,不赘述!

二、按照官网的样例,先跑一个应用
1、生产者:
from kafka import KafkaProducer

producer = KafkaProducer(bootstrap_servers=['127.0.0.1:9092'])  #此处ip可以是多个['0.0.0.1:9092','0.0.0.2:9092','0.0.0.3:9092' ]

for i in range(3):
    msg = "msg%d" % i
    producer.send('test', msg)
producer.close()

2、消费者(简单demo):
from kafka import KafkaConsumer

consumer = KafkaConsumer('test',
                         bootstrap_servers=['127.0.0.1:9092'])
                         
for message in consumer:
    print ("%s:%d:%d: key=%s value=%s" % (message.topic, message.partition,
                                          message.offset, message.key,
                                          message.value))


启动后生产者、消费者可以正常消费。

3、消费者(消费群组)
from kafka import KafkaConsumer

consumer = KafkaConsumer('test',
                         group_id='my-group',
                         bootstrap_servers=['127.0.0.1:9092'])
                         
for message in consumer:
    print ("%s:%d:%d: key=%s value=%s" % (message.topic, message.partition,
                                          message.offset, message.key,
                                          message.value))
                                          
启动多个消费者,只有其中可以可以消费到,满足要求,消费组可以横向扩展提高处理能力

4、消费者(读取目前最早可读的消息)
from kafka import KafkaConsumer

consumer = KafkaConsumer('test',
                         auto_offset_reset='earliest',
                         bootstrap_servers=['127.0.0.1:9092'])
                         
for message in consumer:
    print ("%s:%d:%d: key=%s value=%s" % (message.topic, message.partition,
                                          message.offset, message.key,
                                          message.value))
                                         
auto_offset_reset:重置偏移量,earliest移到最早的可用消息,latest最新的消息,默认为latest
源码定义:{'smallest': 'earliest', 'largest': 'latest'}

5、消费者(手动设置偏移量)
from kafka import KafkaConsumer
from kafka.structs import TopicPartition

consumer = KafkaConsumer('test',
                         bootstrap_servers=['127.0.0.1:9092'])

print consumer.partitions_for_topic("test")  #获取test主题的分区信息
print consumer.topics()  #获取主题列表
print consumer.subscription()  #获取当前消费者订阅的主题
print consumer.assignment()  #获取当前消费者topic、分区信息
print consumer.beginning_offsets(consumer.assignment()) #获取当前消费者可消费的偏移量
consumer.seek(TopicPartition(topic=u'test', partition=0), 5)  #重置偏移量,从第5个偏移量消费
for message in consumer:
    print ("%s:%d:%d: key=%s value=%s" % (message.topic, message.partition,
                                          message.offset, message.key,
                                          message.value))
                                          
6、消费者(订阅多个主题)
from kafka import KafkaConsumer
from kafka.structs import TopicPartition

consumer = KafkaConsumer(bootstrap_servers=['127.0.0.1:9092'])
consumer.subscribe(topics=('test','test0'))  #订阅要消费的主题
print consumer.topics()
print consumer.position(TopicPartition(topic=u'test', partition=0)) #获取当前主题的最新偏移量
for message in consumer:
    print ("%s:%d:%d: key=%s value=%s" % (message.topic, message.partition,
                                          message.offset, message.key,
                                          message.value))
                                          
7、消费者(手动拉取消息)
from kafka import KafkaConsumer
import time

consumer = KafkaConsumer(bootstrap_servers=['127.0.0.1:9092'])
consumer.subscribe(topics=('test','test0'))
while True:
    msg = consumer.poll(timeout_ms=5)   #从kafka获取消息
    print msg
    time.sleep(1)
    
8、消费者(消息挂起与恢复)
from kafka import KafkaConsumer
from kafka.structs import TopicPartition
import time

consumer = KafkaConsumer(bootstrap_servers=['127.0.0.1:9092'])
consumer.subscribe(topics=('test'))
consumer.topics()
consumer.pause(TopicPartition(topic=u'test', partition=0))
num = 0
while True:
    print num
    print consumer.paused()   #获取当前挂起的消费者
    msg = consumer.poll(timeout_ms=5)
    print msg
    time.sleep(2)
    num = num + 1
    if num == 10:
        print "resume..."
        consumer.resume(TopicPartition(topic=u'test', partition=0))
        print "resume......"
        
pause执行后,consumer不能读取,直到调用resume后恢复。

python 操作kafka 首先需要安装 PyKafka: $ pip install pykafka 连接kafka,默认端口9092 >>> from pykafka import KafkaClient >>> client = KafkaClient(hosts="127.0.0.1:9092") 查看主题: client.topics 选择一个自定义top... 阅读详情

相关推荐

细说STM32单片机SPI-Flash芯片的FatFS移植及其应用实例详解

本文以开发板上的SPI-Flash芯片W25Q16为媒介详细介绍CubeMX中FatFS各个参数的意义和设置,分析生成的代码中FatFS各个文件的作用和关联,完成针对W25Q16的硬件访问层的移植。继续使用旺宝红龙开发板STM32F407ZGT6 KITV1.0。

wenchm的博客 1637

python:kafka的消费者(待完善)

本篇是消费者,目前功能还不太完善,还需深入学习

qq_42870572的博客 1920

LTspice仿真三线制PT100高精度测温系统设计

本文详细介绍了如何使用LTspice仿真设计三线制PT100高精度测温系统。文章从三线制原理出发,逐步讲解了在LTspice中建模PT100、构建惠斯通电桥进行信号转换、设计差分放大与滤波电路、选型ADC以及进行系统联调与误差分析的全过程,旨在帮助工程师实现0.5°C分辨率的工业测温方案设计。

pz89012345的博客 98

kafka python教程_kafka python 指定分区消费

通过assign、subscribe两者之一为消费者设置消费的主题consumer = KafkaConsumer(bootstrap_servers=['127.0.0.1:9092'],auto_offset_reset='latest',enable_auto_commit=True, # 自动提交消费数据的offsetconsumer_timeout_ms= 10000, # 如果1秒内k...

weixin_33464176的博客 1154

光模块封装工艺简介

光模块按照部件可以分为芯片、光器件、光模块三个层级;按照应用领域大概可分为电信应用、数通应用两个领域;按照内部器件的封装工艺可分为TO、Box、COB三大类。 但是,无论是哪种类型的光模块,其生产工艺基本上可以分为封装、测试两大块。   那什么叫做器件封装呢?我的理解器件封装就是利用胶水、焊料、机械、热量等手段把器件按照一定的先后次序结合形成一个整体的过程,就好像早上吃的煎饼,把面粉、鸡蛋、脆饼、烤肠、葱花等这些“器件”,按照一定的顺序,通过食用油、甜面酱、加热、卷起来等手段结合到一起,形成了美味的

qq_33253182的博客 2810

GEE:基于 Landsat 数据集生成(1986-2024)月度合成地表温度(LST)时间序列数据

优快云@_养乐多_本文将介绍使用 Landsat 时间序列计算(1986-2024)月度合成地表温度(LST)时间序列数据集的代码。

养乐多的博客 1710

python kafkaconsumer_python kafka 使用

Producer和Consumer#!/usr/bin/env pythonimport threading, logging, timeimport multiprocessingfrom kafka import KafkaConsumer, KafkaProducerBOOTSTRAP_SERVERS='127.0.0.1:9092'class Producer(threading.Thre...

weixin_39516865的博客 1968

RNA-seq分析:Step8(富集分析)

RNA-seq富集分析是一种用于分析基因表达数据中特定基因或通路是否富集的分析方法。其基本思想是比较不同基因对应的转录本/基因之间的表达差异及其对应的基因注释信息,通过统计学方法评估差异的显著性,从而确定是否存在某些特定的功能通路或基因集合富集的情况。常用的RNA-seq富集分析工具包括GOseq、KEGG(KEGG enrichment analysis)、DAVID(Database for Annotation, Visualization and Integrated Discovery)等。这

沉香best的博客 3633

python实现kafaka消息的发送和消费代码示例

在上述代码中,我们创建了一个 KafkaConsumer 实例,并指定要消费的 Topic。通过迭代 KafkaConsumer 对象,我们可以遍历消费者接收到的消息并进行处理。在这个示例中,我们简单地将收到的消息打印出来。在上述代码中,我们首先创建了一个 KafkaProducer 实例,指定了 Kafka 服务器的地址(bootstrap_servers)。然后,我们定义了要发送的消息内容和要发送到的 Topic。另外,确保主题(Topic)的名称和消费者订阅的主题名称一致。首先,确保已经安装了。

学亮编程手记 1088

树根互联Java开发面试题及参考答案

说一下 Java 集合类。 Java 集合类是用于存储和操作一组对象的容器。它提供了多种数据结构,方便程序员对数据进行高效的管理和处理。 Java 集合框架主要包括两大接口:Collection 和 Map。 Collection 接口是一组对象的集合,它有三个主要的子接口:List、Set 和 Queue。 List 接口代表有序的集合,可以包含重复的元素。例如 ArrayList,它是基于数组实现的动态数组。它的优点是随机访问效率高,通过索引访问元素的时间复杂度为 O (1)。当

大模型大数据攻城狮的专栏 853

【保姆级教程】教你如何轻松获取MIMIC数据使用权限

文章非常详细地介绍了MIMIC数据库申请使用的全部步骤。

越努力 越幸运 6598

使用 Python 操作 Kafka

Apache Kafka 是一个分布式的流处理平台,它具有高吞吐量、可扩展性和持久性的特点。通过使用 Python 的 kafka-python 模块,我们可以方便地操作 Kafka。通过以上步骤,我们可以方便地使用 Python 操作 Kafka。你可以根据实际需求进行扩展,比如设置消息的键、使用分区、实现消费者组等。最后,我们可以根据实际需求对消息进行处理,比如将其存储到数据库、进行实时处理等。首先,我们需要安装 kafka-python 模块。希望这篇文章对你有所帮助!接下来,我们可以使用。

sinat_35773915的博客 4156

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

Python—kafka操作

Python操作kafka

蓝魔的博客 554

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

Python 操作 Kafka --- kafka-python

kafka-python:https://github.com/dpkp/kafka-python kafka-python 文档:https://kafka-python.readthedocs.io/en/master/apidoc/modules.html kafka 官方文档:http://kafka.apache.org/docu...

墨鱼菜鸡 1万+

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

python kafka-python 操作Kafka

Pyhon操作Kafka数据库1.Python需要安装pykafka模块pip install pykafka2.python 存入kafka消息# -*- coding: utf-8 -*-from kafka import KafkaProducerproducer = KafkaProducer(bootstrap_servers=["127.0.0.1:9092"])#...

weixin_39634576的博客 416

【如何使用Python操作Kafka】

如何使用Python操作Kafka

嘻嘻哈哈的大傻子的博客 744

kafka搭建,原理,以及python操作kafka——总结

Kafka文档 Kafka介绍: Kafka是由Apache软件基金会开发的一个开源流处理平台,由Scala和Java编写。Kafka是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者规模的网站中的所有动作流数据。 这种动作(网页浏览,搜索和其他用户的行动)是在现代网络上的许多社会功能的一个关键因素。 这些数据通常是由于吞吐量的要求而通过处理日志和日志聚合来解决。 对于像Hadoop的一...

keeper的博客 6690

python学习-python对kafka的相关操作

Kafka是由Apache软件基金会开发的一个开源流处理平台,由Scala和Java编写,用于处理实时数据流。它以高吞吐量、低延迟和可扩展性等特点而著称,广泛应用于Web数据抓取、日志收集、消息系统等领域。​Kafka的主要特点包括:​1. 高吞吐量:Kafka能够处理大规模的数据流,每秒可以处理几十万条消息。​2. 低延迟:Kafka能够快速地传输消息,通常延迟在毫秒级别。​。

wu73guang5jian的博客 1295

python操作Kafka

python操作kafka 参考: https://www.cnblogs.com/hei12138/p/7805475.html https://blog.youkuaiyun.com/zt3032/article/details/78756293 https://kafka-python.readthedocs.io/en/master/index.html https://blog.youkuaiyun.com/l...

WangYouJin321的博客 1147

python之操作kafka

 python操作kafka kafka简介(摘自百度百科) 简介: afka是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者规模的网站中的所有动作流数据。 这种动作(网页浏览,搜索和其他用户的行动)是在现代网络上的许多社会功能的一个关键因素。 这些数据通常是由于吞吐量的要求而通过处理日志和日志聚合来解决。 对于像Hadoop的一样的日志数据和离线分析系统,但又要求实时处理的限

zt3032的博客 2万+

Python通过kerberos安全认证操作kafka

【坑】Python通过kerberos安全认证操作kafka 如何通过Kerberos认证. 1.安装Kerberos客户端 CentOS: yum install krb5-workstation 使用which kinit查看是否安装成功; 2.拷贝Kerberos配置文件 conf目录下krb5.conf和kafka.keytab和jaas.conf拷贝到客户端机器的etc目录, ...

竹筒小神 1万+

Python 操作 Kafka:kafka-python、confluent-kafka

Python 操作 Kafka:kafka-python、confluent-kafka

freeking101的博客 5385

Python操作Kafka

参考文章:使用python操作kafka - 三度 - 博客园 python操作kafka实践 - Small_office - 博客园python kafka生产者 进程间通信和使用线程池 - **小君哥** - 博客园 安装kafka-python pip3 install kafka-python 生产者 producer_test.py from kafka import KafkaProducer class MyKafkaProducer: def __init__.

justlpf的专栏 2491

python操作kafka举例_用python操作kafka

上一篇 博文介绍了 kafka 集群的搭建,本博文介绍如何用 kafka-python 包来链接操作 kafka 集群。安装pip install kafka-python创建 kafka consumerfrom kafka import KafkaConsumerconsumer = KafkaConsumer('test', bootstrap_servers='10.0.0.2:9092,...

weixin_39934257的博客 243
上一篇: python操作pykafka
下一篇: scrapy settings设置详解
唐僧不爱八戒
博客等级 码龄9年 158粉丝 84原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值