Hadoop学习(12)陌陌聊天数据分析
1 陌陌聊天数据分析案例需求 1.1 目标
基于Hadoop和Hive实现聊天数据统计分析,构建聊天数据分析报表。
1.2 需求统计今日总消息量统计今日每小时消息量、发送和接收用户数统计今日各地区发送消息数据量统计今日发送消息和接收消息的用户数统计今日发送消息最多的Top10用户统计今日接收消息最多的Top10用户统计发送人的手机型号分布情况统计发送人的设备操作系统分布情况1.3 数据内容数据大小:两个文件共14万条数据列分隔符:制表符 数据字典及样例数据
2 基于Hive数仓使用SQL实现需求开发 2.1 建库建表、加载数据2.1.1 建库建表--如果数据库已存在就删除 drop database if exists db_msg cascade ; --创建数据库 create database db_msg ; --切换数据库 use db_msg ; --列举数据库 show databases ; --如果表已存在就删除 drop table if exists db_msg.tb_msg_source ; --建表 create table db_msg.tb_msg_source( msg_time string comment "消息发送时间" , sender_name string comment "发送人昵称" , sender_account string comment "发送人账号" , sender_sex string comment "发送人性别" , sender_ip string comment "发送人ip地址" , sender_os string comment "发送人操作系统" , sender_phonetype string comment "发送人手机型号" , sender_network string comment "发送人网络类型" , sender_gps string comment "发送人的GPS定位" , receiver_name string comment "接收人昵称" , receiver_ip string comment "接收人IP" , receiver_account string comment "接收人账号" , receiver_os string comment "接收人操作系统" , receiver_phonetype string comment "接收人手机型号" , receiver_network string comment "接收人网络类型" , receiver_gps string comment "接收人的GPS定位" , receiver_sex string comment "接收人性别" , msg_type string comment "消息类型" , distance string comment "双方距离" , message string comment "消息内容" ) --指定分隔符为制表符 row format delimited fields terminated by " " ;2.1.2 加载数据HDFS上创建目录 hdfs dfs -mkdir -p /momo/data 上传到HDFS hdfs dfs -put /export/data/data1.tsv /momo/data/ hdfs dfs -put /export/data/data2.tsv /momo/data/ 加载到Hive表中 load data inpath "/momo/data/data1.tsv" into table db_msg.tb_msg_source; load data inpath "/momo/data/data2.tsv" into table db_msg.tb_msg_source; 验证结果 select msg_time,sender_name,sender_ip,sender_phonetype,receiver_name,receiver_network from tb_msg_source limit 10;2.2 ETL数据清洗2.2.1 原始数据内容
数据来源:聊天业务系统中导出的2021年11月01日一天24小时的用户聊天数据,以TSV文本形式存储在文件中。
2.2.2 数据问题问题1:当前数据中,有一些数据的字段为空,不是合法数据。问题2:需求中,需要统计每天、每个小时的消息量,但是数据中没有天和小时字段,只有整体时间字段,不好处理。问题3:需求中,需要对经度和维度构建地区的可视化地图,但是数据中GPS经纬度为一个字段,不好处理。2.2.3 ETL需求需求1:对字段为空的不合法数据进行过滤
Where过滤需求2:通过时间字段构建天和小时字段
Substr函数需求3:从GPS的经纬度中提取经度和维度
Split函数需求4:将ETL以后的结果保存到一张新的Hive表中
Create table …… as select ……2.2.4 ETL实现--如果表已存在就删除 drop table if exists db_msg.tb_msg_etl; --将Select语句的结果保存到新表中 create table db_msg.tb_msg_etl as select *, substr(msg_time,0,10) as dayinfo, substr(msg_time,12,2) as hourinfo, --获取天和小时 split(sender_gps,",")[0] as sender_lng, split(sender_gps,",")[1] as sender_lat --提取经度纬度 from db_msg.tb_msg_source --过滤字段为空的数据 where length(sender_gps) > 0 ;
查看结果select msg_time,dayinfo,hourinfo,sender_gps,sender_lng,sender_lat from db_msg.tb_msg_etl limit 10;2.3 需求指标统计2.3.1 指标1:统计今日消息总量--保存结果表 create table if not exists tb_rs_total_msg_cnt comment "今日消息总量" as select dayinfo, count(*) as total_msg_cnt from db_msg.tb_msg_etl group by dayinfo;2.3.2 指标2:统计每小时消息量、发送和接收用户数--保存结果表 create table if not exists tb_rs_hour_msg_cnt comment "每小时消息量趋势" as select dayinfo, hourinfo, count(*) as total_msg_cnt, count(distinct sender_account) as sender_usr_cnt, count(distinct receiver_account) as receiver_usr_cnt from db_msg.tb_msg_etl group by dayinfo,hourinfo;2.3.3 指标3:统计今日各地区发送消息总量--保存结果表 create table if not exists tb_rs_loc_cnt comment "今日各地区发送消息总量" as select dayinfo, sender_gps, cast(sender_lng as double) as longitude, cast(sender_lat as double) as latitude, count(*) as total_msg_cnt from db_msg.tb_msg_etl group by dayinfo,sender_gps,sender_lng,sender_lat;2.3.4 指标4:统计今日发送和接收用户人数--保存结果表 create table if not exists tb_rs_usr_cnt comment "今日发送消息人数、接受消息人数" as select dayinfo, count(distinct sender_account) as sender_usr_cnt, count(distinct receiver_account) as receiver_usr_cnt from db_msg.tb_msg_etl group by dayinfo;2.3.5 指标5:统计发送消息条数最多的Top10用户--保存结果表 create table if not exists tb_rs_susr_top10 comment "发送消息条数最多的Top10用户" as select dayinfo, sender_name as username, count(*) as sender_msg_cnt from db_msg.tb_msg_etl group by dayinfo,sender_name order by sender_msg_cnt desc limit 10;2.3.6 指标6:统计接收消息条数最多的Top10用户--保存结果表 create table if not exists tb_rs_rusr_top10 comment "接受消息条数最多的Top10用户" as select dayinfo, receiver_name as username, count(*) as receiver_msg_cnt from db_msg.tb_msg_etl group by dayinfo,receiver_name order by receiver_msg_cnt desc limit 10;2.3.7 指标7:统计发送人的手机型号分布情况--保存结果表 create table if not exists tb_rs_sender_phone comment "发送人的手机型号分布" as select dayinfo, sender_phonetype, count(distinct sender_account) as cnt from tb_msg_etl group by dayinfo,sender_phonetype;2.3.8 指标8:统计发送人的操作系统分布--保存结果表 create table if not exists tb_rs_sender_os comment "发送人的OS分布" as select dayinfo, sender_os, count(distinct sender_account) as cnt from tb_msg_etl group by dayinfo,sender_os;
3 基于FineBI实现可视化报表 3.1 FineBI的介绍及安装FineBI 是帆软软件有限公司推出的一款商业智能(Business Intelligence)产品。FineBI 是定位于自助大数据分析的 BI 工具,能够帮助企业的业务人员和数据分析师,开展以问题导向的探索式分析。FineBI的特点通过多人协作来实现最终的可视化构建不需要通过复杂代码来实现开发,通过可视化操作实现开发适合于各种数据可视化的应用场景支持各种常见的分析图表和各种数据源支持处理大数据3.2 FineBI配置数据源及数据准备FineBI与Hive集成的官方文档3.2.1 驱动配置问题:如果使用FineBI连接Hive,读取Hive的数据表,需要在FineBI中添加Hive的驱动jar包。解决:将Hive的驱动jar包放入FineBI的lib目录下。找到提供的【Hive连接驱动】
放置
将这些文件放入FineBI的安装目录下的:webappswebrootWEB-INFlib目录中。3.2.2 插件安装问题:我们自己放的Hive驱动包会与FineBI自带的驱动包产生冲突,导致FineBI无法识别我们自己的驱动包。解决:安装FineBI官方提供的驱动包隔离插件。找到隔离插件
安装插件
重启FineBI3.2.3 构建连接新建连接
配置连接
3.2.4 数据准备新建分组
添加业务包
添加表
更新业务包
U20国足队长陷年龄造假门,中国足协不能只当鸵鸟!人红是非多!这句话用在U20国足队长艾菲尔丁身上可以说再合适也不过了。凭借着在U20亚洲杯上的出色表现,这位出生于新疆的小伙子被誉为了中国足球的新希望之星。然而,光环刚刚出现才短短
邀请你在这留下你的牛皮!前一段时间,我发现在豆瓣有一个小组叫做吹牛逼不用担心被嘲讽。这个小组宗旨的宗旨是吹牛有理,不应该总被嘲笑嘲讽。吹牛是展示自己的正常出口,不然怎么被人认识。更多的是一种情感宣泄出口,
想你的日子想你爱情思念想你的日子,是一种深刻的感受仿佛时间凝固,只留下那份思念思念是一种甜蜜的痛苦让我们在渴望与等待中,品味着回忆中的幸福每当夜幕降临,孤独的时刻想你的思绪在脑海中盘旋回忆往
和台湾民众聊聊独与统的日子台湾出台湾名嘴赖岳谦之口这么一种说法台湾百分之八十以上的人赞成台独,大陆百分之八十以上的人赞成武统!两个百分之八十相向!一个是2300万的百分之八十,一个是14亿的百分之八十!这碰
曹操有几个妻子?曹操的儿子从大到小排行榜曹操是中国历史上最著名的军事统帅之一。然而,除了他的军事才能,他在后宫中的行为也引发了许多争议。曹操被批评喜欢别人的妻妾,并在后宫中有很多妻妾。曹操为什么喜欢别人的妻妾,是一个有争
你还记得那个见义勇为的灭火少年赖宁吗?那是一种精神身为80年代出生的人,小学的时候,相信大家一定记得赖宁这个名字。那不仅是一个灭火的少年,更是一种见义勇为奋不顾身的牺牲精神。时间过去这么久了,现在已经很少有人提起赖宁这个名字和他的
宁德时代拯救福特汽车?必须防止美国下黑手28年前,中国求着美国技术换市场28年后,轮到美国求着中国技术换市场。宁德时代向福特技术输出,说明在电动汽车领域,中美地位开始扭转。但宁德时代必须万分小心,无论如何都要留一手,防止
中青漫评丨让雷锋精神随着时代的列车一路前行雷锋精神永不过时,催人奋进。在我国大江南北,雷锋的名字家喻户晓,雷锋的事迹深入人心,雷锋精神伴随着一代代华夏儿女共同成长。从绿皮火车到高铁纵横,雷锋精神随着时代的列车一路前行。在志
服务升级焕新千兆时代,为数字生活添炫彩焕新千兆时代,为数字生活添炫彩广东电信千兆宽带服务全面升级数字广东建设正当时,数字化智能化浪潮奔涌而至!广东电信作为广东省内优质网络运营商,不断加大三千兆建设投入,一直坚持技术创新
三大互联网反智群体U型锁夹头粉黄鹅无知和愚昧并不是封建时代的产物,时至今日也经常能见到它们的踪影,即便未来人类科技发展到星际移民阶段,愚昧依然会存在。科技进步只是提高了生产力,并没有从根本上消除愚昧与无知。在互联网
两会议事厅肖正强代表做好乡村旅游多元特色发展大文章我省乡村旅游资源的多样性,为发展多样性的特色旅游产业创造了极佳条件。全国人大代表,安顺市平坝区白云镇平元村党支部书记村委会主任肖正强说。近年来,贵州在实施乡村振兴战略中,立足各地特
全面缩招!事关2023考研国家线!2023年考研初试成绩出分在即,复试和调剂政策成为很多同学关心的重头戏,今天育路小编给大家详细解释一下,顺便预测一下2023考研国家线学校初试成绩查询时间重庆理工大学2月20日沈阳
晚间公告丨2月16日这些公告有看头品大事金运激光实控人梁伟因涉嫌操纵证券市场罪被逮捕金运激光(300220)公告,公司实控人梁伟因涉嫌操纵证券市场罪,经江苏省淮安市中级法院批准,于2月15日被淮安市公安局执行逮捕。
直播带岗云上就业,跨领域的新式招聘李玲(河西学院)与传统的直播间不同,这个直播间不带货,只带岗。开年来,各地开展花式招聘,不少用人企业通过直播带岗等线上方式招聘,云上找工作风靡一时。(2月17日中国新闻网)直播带岗
东方优选主播董宇辉将获赠北京户口住房等奖励?北京平谷辟谣不实中国经济周刊经济网讯近日,东方优选(北京)科技有限公司主播及文案创意董宇辉获得2023北京平谷人才发展大会深耕厚植奖。有消息称,董宇辉或将获得100万奖金北京市户口及住房。不过,平
房贷可延长至80岁后,还有多少空间可以突破?近日,南宁房贷年龄期限可延长至80岁的新闻冲上热搜。事实上,这已不是银行业第一次突破既往的年龄限制,2019年,就曾有杭州某银行将房屋按揭贷款延伸至80岁。为了鼓励居民的购房意愿,
这群新兵有绝活艺术巧手扮靓军营国家二级运动员传授训练技巧技术人才入选三小工种子库这批新兵,有点料!小罗师傅罗博罗博,咱们的暖气最近总是不热,你能不能解决一下!就是,你不总是说自己一把扳手行天下,
同桌战友夫妻!这对双特军人真让人羡慕文图陈军李果霖他们从青春校园到一身戎装从同桌变成战友最后约定携手一生共赴婚姻殿堂他叫卢文龙是第73集团军某合成旅坦克连队特级车长她叫朱梦蝶是第71集团军某旅指挥通信连唯一一名体能特
丈夫与大丈夫仅一字之差,表达意思却截然不同理想人格表现在自我层面上就是通过内在的自我修养而实现人生价值,丰富人生意义的表现,是个体对自我的完善,就整体而言,代表着整个国家的精神气质和道德素质水平。处于孟子理想人格体系之一的
中国馈赠丝绸波斯回礼宝马和宝刀伊朗一带一路的地位也是自古以来中国和伊朗最近又签署了合作协议,这也是中国和伊朗的自古以来。从丝绸之路时期到近代,波斯人都从中国的丝绸中获益匪浅而中国也从波斯得到了宝马和宝刀的回礼,是很有互补性的合作伙伴。波斯人
315律师说法丨汽车厂商单方面改变销售政策,是否涉嫌违约?编者按2023年315消费者权益保护日即将到来,西部网民生热线启动315维权线索征集活动,同步推出315律师说法栏目,邀请维权律师团,围绕热点消费问题,为消费者提供法律解析,解锁维
芙蓉国评论丨巧用三镜让党建述职实打实开展党建述职评议,是落实基层党建责任的有效抓手,贯彻全面从严治党的重要举措。当前,各地基层党组织党建述职正有序开展。但现实中,仍存在过关心理,有的述职问题老生常谈或者换汤不换药,有