用Python做数据分析,大致流程如下:
1、数据获取
可以通过SQL查询语句来获取数据库中想要数据。Python已经具有连接sql server、mysql、orcale等主流数据库的接口包,比如pymssql、pymysql、cx_Oracle等。
2、数据存储
企业当中的数据存储,通过通过数据库如Mysql来存储与管理,对于非结构化数据的存储可以使用MongoDB等。对于使用Python进行网络抓取的数据,我们也可以使用pymysql包快速地将其存储到Mysql中去。
3、数据预处理/数据清洗
大多数情况下,原始数据是存在格式不一致,存在异常值、缺失值等问题的,而不同项目数据预处理步骤的方法也不一样。Python做数据清洗,可以使用Numpy和Pandas这两个工具库。
4、数据建模与分析
常见的数据挖掘模型有:分类、聚类、回归等,这些常见的算法模型,Python也有Scikit-learn和Tensorflow工具库来支持。
5、数据可视化分析
在数据可视化方面,Python有Matplotlib、Seaborn、Pyecharts等工具库可用。
连接kafka
的库有两种类型,一种是直接连接
kafka
的,存储
offset
的事情要自己在客户端完成。还有一种是先连接
zookeeper
然后再通过
zookeeper
获取
kafka
的
brokers
信息,
offset
存放在
zookeeper
上面,由
zookeeper
来协调。
我现在使用
samsa
这个
highlevel
库
Producer示例
from
kazoo.client
import
KazooClientfrom
samsa.cluster
import
Clusterzookeeper
=
KazooClient()zookeeper.start()cluster
=
Cluster(zookeeper)topic
=
cluster.topics['topicname']topic.publish('msg')
**
Consumer示例
**
from
kazoo.client
import
KazooClientfrom
samsa.cluster
import
Clusterzookeeper
=
KazooClient()zookeeper.start()cluster
=
Cluster(zookeeper)topic
=
cluster.topics['topicname']consumer
=
topic.subscribe('groupname')for
msg
in
consumer:
msg
Tip
consumer
必需在
producer
向
kafka
的
topic
里面提交数据后才能连接,否则会出错。
在
Kafka
中一个
consumer
需要指定
groupname
,
groue
中保存着
offset
等信息,新开启一个
group
会从
offset
0
的位置重新开始获取日志。
kafka
的配置参数中有个
partition
,默认是
1
,这个会对数据进行分区,如果多个
consumer
想连接同个
group
就必需要增加
partition
,
partition
只能大于
consumer
的数量,否则多出来的
consumer
将无法获取到数据。
这么具体的问题,找通用demo很难啊,个人觉得问题的难点不在Python。1. 获取什么服务器性能数据和如何获取,可以请教公司内部运维。
2. 获取什么数据库性能数据和如何获取,可以请教公司内部DBA。
3. 以上两点搞定了,才能确定临时数据存储结构和最终数据库表结构。
以上三点是关键,Python的事情就简单多了,提供一种思路:一分钟一次,实时性不高,每台服务器用cron部署一个a.py,用于获取性能数据,在某一台服务器有一个b.py,负责获取所有服务器a.py产生的数据,然后写入数据库;a.py如何上报到b.py取决于你擅长什么,如果熟悉网络编程,用a.py做客户端上报到服务端b.py,如果熟悉shell的文件同步(如rsync),a.py只写本地文件,b.py调用c.sh(封装rsync)拉取远程文件。