一节课让你学会从 MySQL 到 Kibana 微博用户及推文数据可视化
先上图,有图有真相!
微博数据可视化
熟悉 Elastic Stack 的小伙伴对上面的图会感觉并不新鲜,对其中的技术栈也如数家珍,如下图一把梭走起:
数据同步
MySQL 数据借助 Logstash 同步到 Elasticsearch,然后借助 Kibana 进行可视化。
但是,如下问题该如何解决呢?
- 问题 1:MySQL 不是全部字段都是结构化的,其中一个详情字段存储了 Json?
MySQL 数据源
- 问题 2:地图打点数据需要经纬度坐标,原始数据并没有,怎么办?
- 问题 3:Logstash 部署时,宿主机内存所剩无几,同步数据经常会出现内存耗尽,怎么办?
- 问题 4:Logstash 同步能否用 Kibana 可视化监控起来?
- 问题 5:8.X+ 系列和以往版本有没有什么不同或创新地方?
- 问题 6:数据如何建模才能更好的实现可视化?
- 问题7:字段无法满足可视化需求,Logstash filter 预处理和 Elasticsearch 预处理孰优孰劣?
- 问题 8:Kibana 可视化时,单字:”的“、”你“、”有“、”好“、”乐“等噪音数据非常多,如何一键搞定?而非手动过滤?
带着如上8个问题,我们开始今天的探索。
1、整体看待 Elastic Stack 技术栈的用途
Elastic Stack 架构
- Elasticsearch:大数据预处理、存储和检索
- Kibana:大数据可视化
Kibana 功能图解
Logstash:数据同步管道,同步一切可同步数据源。借助其强大的同步插件实现,包含但不限于:
插件 | 用途 |
---|---|
logstash_input_jdbc | 各种数据库相关 |
logstsh_input_redis | redis 数据同步 |
logstash_input_kafka | kafka数据同步 |
logstash_input_log4j | 日志数据同步 |
2、从数据流全局视角看待数据
当我们要进行数据分析、数据可视化的时候,首先要梳理清楚的是:数据从哪里来?数据要到那里去?
我们手头拿到的数据来自 MySQL,而你真实项目需求可能来自:Oracle、MongoDB、Spark、Kafka、Flink等等......
其实,来自哪里并不重要。
这些我们都统一归类为:数据源。
以终为始,最终我们期望借助 kibana 实现数据的可视化的分析。
那么最终数据需要落脚点为:Kibana,而 Kibana 是基于 Elasticsearch 数据进行分析的,所以:MySQL 数据需要先同步到 Elasticsearch。
借助什么来同步呢?当然可以自己写代码批量读、批量写。数据量大涉及到增量同步和全量分布,前文提到 Logstash 类似管道,可以实现同步一切可以同步的数据。
所以,可以借助:logstash 实现同步。当然,其他的同步工具:flume、Debezium、阿里开源的 canal 等等也可以实现。
选型方面可以参考如下的脑图:
同步选型脑图
Logstash 支持增量和全量同步,我们选择 Logstash 实现 MySQL 到 Elasticsearch 同步。
所以整个数据流基本敲定:MySQL -> Logstash -> Elasticsearch -> Kibana。
3、从数据模型角度看待 Kibana 可视化
Kibana 可供可视化的维度最核心是基于 Elasticsearch 聚合实现的,而 Elasticsearch 聚合对应于 MySQL 的 groupby 等分组统计语句。
了解了这个本质之后,我们最终要考虑对数据可视化,往前推最重要的是需要考虑数据的模型和建模。
而数据源是微博数据(假数据),微博数据又细分为微博用户数据及微博推文数据,我们是一整条宽表存储到一起的。
可以预估实现的维度包含但不限于:
字段名称 | 字段含义 | 可视化类型 |
---|---|---|
publish_time | 推文时间 | 时间走势图 |
un | 用户名 | 用途推文量排序统计图 |
ugen | 用户性别 | 性别统计 |
location | 发布省份 | 省份统计图 |
uv | 是否认证 | 认证用户统计 |
cont | 推文内容 | 推文内容词云 |
sent | 情感 | 情感分类统计 |
自己完善 | 经纬度 | 地图打点图 |
这个环节为以 MySQL 已有数据为蓝本,然后构造出上面的表格。进而会发现问题。
当前问题主要包括:
- 1)MySQL 有一个字段 wb_detail Json 形式存储的,如何打散以便于后续的逐个字段分析?
- 2)有省份名称,没有经纬度,但是我们期望打点地图显示?
这些都是亟待解决的问题。
4、具体实现效果
4.1 MySQL 同步 Elasticsearch实现
批量值自己定义的,我内存不足,设定一次 10000条(后期调整为 20000,再大内存扛不住)数据。
Logstash 同步截图
写入环节 Kibana 可视化监控效果图:
4.2 Logstash 监控的同步写入效果
写入比较平稳,资源利用率整体可控。
4.3 可视化效果
整体流程会比较清晰,但涉及的细节会非常多,篇幅原因,没有穷尽所有实现。
相关文章
- 据MySQL记录管理:保证数据安全可靠(mysql数据记录数)
- MySQL恢复Root用户的有效方法(mysql恢复root)
- MySQL主从同步故障处理(mysql主从同步失败)
- 掌握MySQL网络数据库知识:一次性指南(mysql网络数据库指南)
- MySQL 用户权限分析与查询(mysql用户权限查询)
- 名MySQL 子查询中实现自定义字段名(mysql子查询字段)
- 服务重新启动MySQL服务的步骤(怎么重新启动mysql)
- MySQL主键自增:让数据更安全(mysql主键自增)
- 记录MySQL: 新增记录的操作指南(mysql添加一行)
- MySQL中的二进制数据存储实践.(mysql二进制数据)
- MySQL中的二进制数据存储(mysql二进制数据)
- MySQL中存储的二进制数据(mysql二进制数据)
- 如何进行MySQL数据库表恢复:解决数据丢失问题的必备技能.(mysql数据库表恢复)
- MySQL导出SQL数据的工具推荐(mysql导出sql工具)
- 如何利用MySQL实现亿级数据优化(mysql亿级数据优化)
- MySQL监控工具Top 10排行榜(mysql监控工具排名)
- Mysql中字段长度限制详解,设置正确长度确保数据有效性(mysql中字段长度)
- Mysql的大小写问题:对数据的影响及解决方案(mysql数据大小写)
- 数据MySQL查询整型数据的有效方法(mysql 查询int)
- MySQL中事务一种保证数据完整性的机制(mysql中事务是什么)
- MySQL中的COBA技术引领数据革新(coba mysql)
- MySQL两张表数据不同的解决方法(mysql 两表不同数据)
- MySQL中超屌的CID优化你的数据库(cid mysql)
- CAD图纸与MySQL数据驱动的双赢之道(cad图纸与mysql)
- BS加MySQL实现数据存储与可视化分析的技术结合(bs加mysql)
- 解决1136错误MySQL缺少必要列(1136报错mysql)
- MySQL三表条件查询让数据交错有序再次呈现(mysql三表条件查询)
- 掌握MySQL,一年以后轻松开发数据库系统(mysql 一年以后)
- MySQL 数据计算如何对两组数据进行运算(mysql两组数据计算)
- MySQL 56下载安装配置全攻略(mysql下载安装5.6)
- MySQL记录用户上次登录时间,让管理更安全(mysql上次登录时间)
- MySQL三大知识,让你成为数据库高手(mysql三大知识)
- MySQL如何处理一天的数据(mysql 一天数据)