Kafka入门案例(Python生产与消费)

核心参考资料:http://dblab.xmu.edu.cn/blog/1534/

数据集:https://pan.baidu.com/s/1cs02Nc

所需知识储备

简单使用python,了解Kafka的使用

训练技能

Python基本使用,Python操作Kafka代码库kafka-python使用

任务清单

1、利用Python预处理数据

2、Python操作Kafka

数据预处理

本案例采用的数据集压缩包为data_format.zip,该数据集压缩包是淘宝2015年双11前6个月(包含双11)的交易数据(交易数据有偏移,但是不影响实验的结果),里面包含3个文件,分别是用户行为日志文件user_log.csv 、回头客训练集train.csv 、回头客测试集test.csv. 在这个案例中只是用user_log.csv这个文件,下面列出文件user_log.csv的数据格式定义:

用户行为日志user_log.csv,日志中的字段定义如下:
1. user_id | 买家id
2. item_id | 商品id
3. cat_id | 商品类别id
4. merchant_id | 卖家id
5. brand_id | 品牌id
6. month | 交易时间:月
7. day | 交易事件:日
8. action | 行为,取值范围{0,1,2,3},0表示点击,1表示加入购物车,2表示购买,3表示关注商品
9. age_range | 买家年龄分段:1表示年龄<18,2表示年龄在[18,24],3表示年龄在[25,29],4表示年龄在[30,34],5表示年龄在[35,39],6表示年龄在[40,49],7和8表示年龄>=50,0和NULL则表示未知
10. gender | 性别:0表示女性,1表示男性,2和NULL表示未知
11. province| 收获地址省份

数据具体格式如下:

这个案例实时统计每秒中男女生购物人数,因此针对每条购物日志,我们只需要获取gender即可,然后发送给Kafka,接下来Spark Streaming再接收gender进行处理

数据预处理

pip install karka-python

文件名为:producer.py

#coding:utf-8
import csv
import time
from kafka import KafkaProducer

#实例化一个KafkaProducer示例,用于向kafka投递消息
producer=KafkaProducer(bootstrap_servers='10.200.117.85:6667')  
#这里的10.200.117.85是集群某台机器的ip,如果是单机可以用localhost
#6667是kafka broker的端口,应该是kafka版本不同而有变化,应对自身应查询broker的端口号是多少
#打开数据文件
csvfile=open("D:/public_train_data/data_format/user_log.csv","r",encoding='utf-8')
#生成一个可用于读取csv文件的reader
reader=csv.reader(csvfile)

i=100
for line in reader:
    gender=line[9] #性别在每行日志代码的第9个元素
    if gender=='gender':
        continue #去除第一行表头
    time.sleep(0.5)
    #发送数据,topic为'sex;
    producer.send('sex',line[9].encode('utf8'))
    i=i-1
    print(i)
    if i==0:
        print('send finished')
        break

上述代码很简单,首先是先实例化一个Kafka生产者。然后读取用户日志文件,每次读取一行,接着每隔0.1秒发送给Kafka,这样1秒发送10条购物日志。这里发送给Kafka的topic为’sex’

Python操作Kafka

我们可以写一个KafkaConsumer测试数据是否投递成功,代码如下,文件名为consumer.py

#coding:utf-8
from kafka import KafkaConsumer

consumer=KafkaConsumer('sex',bootstrap_servers='10.200.117.85:6667')
for msg in consumer:
    print((msg.value).decode('utf8'))

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值