目录
安装kafka
1.安装kafka:kafka_2.12-2.4.0.tgz到C盘根目录下,并解压,重命名文件为kafka
2.启动Zookeeper服务:打开cmd命令窗口,用cd c:/kafka命令切换到kafka文件路径下,输入:bin\windows\zookeeper-server-start.bat config\zookeeper.Properties
3.启动kafka:在此打开一个cmd命令窗口,切换路径,输入:bin\windows\kafka-server-start.bat config\server.properties
主题操作
1.创建一个主题(Topic),名称为“topic_test”,包含一个分区,只有一个副本
打开命令行,切换路线,输入:bin\windows\kafka-topics.bat --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic topic_test,会有警告,但是仍然会创建
2. 显示主题
打开命令行,切换路线,输入:bin\windows\kafka-topics.bat --list --zookeeper localhost:2181
创建生产者
打开一个cmd窗口,切换路线,输入:.\bin\windows\kafka-console-producer.bat --broker-list localhost:9092 --topic topic_test,出现小尖角表示创建成功(在里面输入内容消费者可以接收到)
其中‘localhost:9092’表示生产者的ip及开放端口号,‘topic_test’表示主题名字
创建消费者
打开一个cmd窗口,切换路线,输入:.\bin\windows\kafka-console-consumer.bat --bootstrap-server localhost:9092 --topic topic_test --from-beginning,可以用生产者测试是否可以接收到消息
其中‘localhost:9092’表示要连接的主机及端口,‘topic_test’表示主题名字
用python操作kafka
1. 安装包kafka-python:打开Anaconda Prompt,输入pip install kafka-python
2.创建生产者并发送信息步骤:打开python的Jupyter,输入并运行:
from kafka import KafkaProducer
producer = KafkaProducer(bootstrap_servers='localhost:9092') # 连接Kafka
msg = " Hello,my id is 4200214119!".encode('utf-8') # 发送内容,必须是bytes类型
producer.send('topic_test', msg) # 发送的topic为test
producer.close() #关闭
3.创建消费者接收信息步骤:打开python的Jupyter,输入并运行:
from kafka import KafkaConsumer
consumer = KafkaConsumer('topic_test', bootstrap_servers=['localhost:9092'],group_id=None,auto_offset_reset='smallest')
for msg in consumer:
recv = "%s:%d:%d: key=%s value=%s" % (msg.topic, msg.partition, msg.offset, msg.key, msg.value)
print(recv)
#字节到字符串处理函数为msg.value.decode(‘utf-8’)
Kafka与mysql组合使用
1.启动mysql:打开cmd窗口,输入:net start mysql启动mysql服务,使用mysql -uroot -p123456登录mysql,出现‘mysql>’表示登录成功
2.用mysql创建数据库:用create database school;命令创建一个名为school的数据库,用use school;使用该数据库
3.创建表:使用建表语句(如下所示),用show tables;查看所有表(确定是否成功建表)
create table student(
sno int,
sname char(8),
ssex char(2),
sage int);
4.创建生产者:
from kafka import KafkaProducer
import json
producer=KafkaProducer(bootstrap_servers='localhost:9092', value_serializer=lambda v: json.dumps(v).encode('utf-8'))
datas = [{"sno":95001,"sname":"John","ssex":"M","sage":23},{"sno":95002,"sname":"Tom","ssex":"M","sage":23}]
for data in datas:
producer.send('json_topic',data)
producer.close()
5.创建消费者:打开Anaconda Prompt,输入pip install pymysql下载包,然后在Jupyter输入命令
from kafka import KafkaConsumer
import json
import pymysql.cursors
consumer = KafkaConsumer('json_topic', bootstrap_servers=['localhost:9092'], group_id=None, auto_offset_reset='earliest')
for msg in consumer:
msg1 = str(msg.value, encoding="utf-8")
dict = json.loads(msg1)
connect=pymysql.Connect(host='localhost', port=3306, user='root', passwd='123456', db='school', charset='utf8')
cursor = connect.cursor()
sql="INSERT INTO student(sno,sname,ssex,sage) VALUES('%d','%s','%s','%d')"
data=(dict['sno'],dict['sname'],dict['ssex'],dict['sage'])
cursor.execute(sql%data)
connect.commit()
print('成功插入数据')
connect.close()
6.查看表:在mysql中输入:select * from student;查看student表信息