logo资料库

13_尚硅谷大数据技术之电信客服.docx

第1页 / 共84页
第2页 / 共84页
第3页 / 共84页
第4页 / 共84页
第5页 / 共84页
第6页 / 共84页
第7页 / 共84页
第8页 / 共84页
资料共84页,剩余部分请下载后查看
第1章 项目背景
第2章 项目架构
第3章 项目实现
3.1 数据生产
3.1.1 数据结构
3.1.2 编写代码
3.1.3 打包测试
3.2 数据采集/消费(存储)
3.2.1 数据采集
3.2.2 数据消费
3.2.3 数据查询方式一
3.2.4 数据查询方式二
3.2.5 数据消费方案优化
3.2.6 协处理器
3.2.7 数据消费测试
3.3 数据分析
3.3.1 需求分析
3.3.2 Mysql表结构设计
3.3.3 环境准备
3.3.4 需求实现
3.3.5 运行测试
3.4 数据展示
3.4.1 环境准备
3.4.2 编写代码
3.4.5 最终预览
3.5 定时任务
第4章 项目总结
尚硅谷大数据技术之电信客服 ——————————————————————————— —— 尚硅谷大数据技术之电信客服 (作者:尚硅谷大数据研发部) 版本:V1.1 目录 第 1 章 项目背景.............................................................................................................................. 3 第 2 章 项目架构.............................................................................................................................. 3 第 3 章 项目实现.............................................................................................................................. 3 3.1 数据生产 ............................................................................................................................. 4 3.1.1 数据结构 ..................................................................................................................4 3.1.2 编写代码 ..................................................................................................................5 3.1.3 打包测试 ..................................................................................................................9 3.2 数据采集/消费(存储).........................................................................................................9 3.2.1 数据采集 ................................................................................................................10 3.2.2 数据消费 ................................................................................................................11 3.2.3 数据查询方式一....................................................................................................19 3.2.4 数据查询方式二....................................................................................................26 3.2.5 数据消费方案优化 ................................................................................................29 3.2.6 协处理器 ................................................................................................................32 3.2.7 数据消费测试 ........................................................................................................32 3.3 数据分析 ........................................................................................................................... 34 3.3.1 需求分析 ................................................................................................................35 3.3.2 Mysql 表结构设计 .................................................................................................. 36 3.3.3 环境准备 ................................................................................................................38 3.3.4 需求实现 ................................................................................................................40 3.3.5 运行测试 ................................................................................................................61 3.4 数据展示 ........................................................................................................................... 61 更多 Java –大数据 –前端 –python 人工智能资料下载,可百度访问:尚硅谷官网
尚硅谷大数据技术之电信客服 ——————————————————————————— —— 3.4.1 环境准备 ................................................................................................................61 3.4.2 编写代码 ................................................................................................................67 3.4.5 最终预览 ................................................................................................................81 3.5 定时任务 ........................................................................................................................... 83 第 4 章 项目总结............................................................................................................................ 83 更多 Java –大数据 –前端 –python 人工智能资料下载,可百度访问:尚硅谷官网
尚硅谷大数据技术之电信客服 ——————————————————————————— —— 第 1 章 项目背景 通信运营商每时每刻会产生大量的通信数据,例如通话记录,短信记录,彩信记录,第 三方服务资费等等繁多信息。数据量如此巨大,除了要满足用户的实时查询和展示之外,还 需要定时定期的对已有数据进行离线的分析处理。例如,当日话单,月度话单,季度话单, 年度话单,通话详情,通话记录等等+。我们以此为背景,寻找一个切入点,学习其中的方 法论。当前我们的需求是:统计每天、每月以及每年的每个人的通话次数及时长。 第 2 章 项目架构 项目架构如图 1 所示 第 3 章 项目实现 系统环境: 系统 windows 图 1 项目架构 表 1 版本 10 专业版 更多 Java –大数据 –前端 –python 人工智能资料下载,可百度访问:尚硅谷官网
尚硅谷大数据技术之电信客服 ——————————————————————————— —— linux 开发工具: 工具 idea maven JDK CentOS 6.8 表 2 版本 2017.2.5 旗舰版 3.3.9 1.8+ 提示:idea2017.2.5 必须使用 maven3.3.9,不要使用 maven3.5,有部分兼容性问题 集群环境: 框架 hadoop zookeeper hbase flume kafka 硬件环境: 表 3 版本 2.7.2 3.4.10 1.3.1 1.7.0 2.11-0.11.0.0 表 4 hadoop102 hadoop103 hadoop104 内存 CPU 硬盘 3.1 数据生产 4G 2 核 50G 2G 1 核 50G 2G 1 核 50G 此情此景,对于该模块的业务,即数据生产过程,一般并不会让你来进行操作,数据生 产是一套完整且严密的体系,这样可以保证数据的鲁棒性。但是如果涉及到项目的一体化方 案的设计(数据的产生、存储、分析、展示),则必须清楚每一个环节是如何处理的,包括 其中每个环境可能隐藏的问题;数据结构,数据内容可能出现的问题。 3.1.1 数据结构 更多 Java –大数据 –前端 –python 人工智能资料下载,可百度访问:尚硅谷官网
尚硅谷大数据技术之电信客服 ——————————————————————————— —— 我们将在 HBase 中存储两个电话号码,以及通话建立的时间和通话持续时间,最后再 加上一个 flag 作为判断第一个电话号码是否为主叫。姓名字段的存储我们可以放置于另外一 张表做关联查询,当然也可以插入到当前表中。 表 5 列名 call1 解释 举例 第一个手机号码 15369468720 call1_name 第一个手机号码人姓名(非必须) 李雁 call2 call2_name date_time 第二个手机号码 19920860202 第二个手机号码人姓名(非必须) 卫艺 建立通话的时间 20171017081520 date_time_ts 建立通话的时间(时间戳形式) duration 通话持续时间(秒) 0600 3.1.2 编写代码 思路: a) 创建 Java 集合类存放模拟的电话号码和联系人; b) 随机选取两个手机号码当作“主叫”与“被叫”(注意判断两个手机号不能重复),产出 call1 与 call2 字段数据; c) 创建随机生成通话建立时间的方法,可指定随机范围,最后生成通话建立时间,产出 date_time 字段数据; d) 随机一个通话时长,单位:秒,产出 duration 字段数据; e)、将产出的一条数据拼接封装到一个字符串中; f)、使用 IO 操作将产出的一条通话数据写入到本地文件中; 新建 module 项目:ct_producer pom.xml 文件配置: junit junit 4.12 test 更多 Java –大数据 –前端 –python 人工智能资料下载,可百度访问:尚硅谷官网
尚硅谷大数据技术之电信客服 ——————————————————————————— —— 1) 随机输入一些手机号码以及联系人,保存于 Java 的集合中。 新建类:ProductLog //存放联系人电话与姓名的映射 public Map contacts = null; //存放联系人电话号码 public List phoneList = null; public void initContacts() { contacts = new HashMap(); phoneList = new ArrayList(); phoneList.add("15369468720"); phoneList.add("19920860202"); phoneList.add("18411925860"); phoneList.add("14473548449"); phoneList.add("18749966182"); phoneList.add("19379884788"); phoneList.add("19335715448"); phoneList.add("18503558939"); phoneList.add("13407209608"); phoneList.add("15596505995"); phoneList.add("17519874292"); phoneList.add("15178485516"); phoneList.add("19877232369"); phoneList.add("18706287692"); phoneList.add("18944239644"); phoneList.add("17325302007"); phoneList.add("18839074540"); phoneList.add("19879419704"); phoneList.add("16480981069"); phoneList.add("18674257265"); phoneList.add("18302820904"); phoneList.add("15133295266"); phoneList.add("17868457605"); phoneList.add("15490732767"); phoneList.add("15064972307"); contacts.put("15369468720", "李雁"); contacts.put("19920860202", "卫艺"); contacts.put("18411925860", "仰莉"); contacts.put("14473548449", "陶欣悦"); contacts.put("18749966182", "施梅梅"); contacts.put("19379884788", "金虹霖"); contacts.put("19335715448", "魏明艳"); contacts.put("18503558939", "华贞"); contacts.put("13407209608", "华啟倩"); contacts.put("15596505995", "仲采绿"); contacts.put("17519874292", "卫丹"); contacts.put("15178485516", "戚丽红"); contacts.put("19877232369", "何翠柔"); 更多 Java –大数据 –前端 –python 人工智能资料下载,可百度访问:尚硅谷官网
尚硅谷大数据技术之电信客服 ——————————————————————————— —— contacts.put("18706287692", "钱溶艳"); contacts.put("18944239644", "钱琳"); contacts.put("17325302007", "缪静欣"); contacts.put("18839074540", "焦秋菊"); contacts.put("19879419704", "吕访琴"); contacts.put("16480981069", "沈丹"); contacts.put("18674257265", "褚美丽"); contacts.put("18302820904", "孙怡"); contacts.put("15133295266", "许婵"); contacts.put("17868457605", "曹红恋"); contacts.put("15490732767", "吕柔"); contacts.put("15064972307", "冯怜云"); } 2) 创建随机生成通话时间的方法:randomDate 该时间生成后的格式为 yyyy-MM-dd HH:mm:ss,并使之可以根据传入的起始时间和结束时 间来随机生成。 //随机生成通话建立时间 private String randomDate(String startDate, String endDate) { SimpleDateFormat SimpleDateFormat("yyyy-MM-dd"); try { simpleDateFormat = new Date start = simpleDateFormat.parse(startDate); Date end = simpleDateFormat.parse(endDate); if (start.getTime() > end.getTime()) return null; long resultTime = start.getTime() + (long) (Math.random() * return resultTime + ""; e.printStackTrace(); (end.getTime() - start.getTime())); } catch (ParseException e) { } return null; } 3) 创建生产日志一条日志的方法:productLog 随机抽取两个电话号码,随机产生通话建立时间,随机通话时长,将这几个字段拼接成 一个字符串,然后 return,便可以产生一条通话的记录。需要注意的是,如果随机出的两个 电话号码一样,需要重新随机(随机过程可优化,但并非此次重点)。通话时长的随机为 20 分钟以内,即:60 秒 * 20,并格式化为 4 位数字,例如:0600(10 分钟)。 //拼接日志 private String productLog() { int call1Index = new Random().nextInt(phoneList.size()); int call2Index = -1; String call1 = phoneList.get(call1Index); String call2 = null; 更多 Java –大数据 –前端 –python 人工智能资料下载,可百度访问:尚硅谷官网
尚硅谷大数据技术之电信客服 ——————————————————————————— —— while (true) { call2Index = new Random().nextInt(phoneList.size()); call2 = phoneList.get(call2Index); if (!call1.equals(call2)) break; } //随机生成通话时长(30 分钟内_0600) int duration = new Random().nextInt(60 * 30) + 1; //格式化通话时间,使位数一致 String //通话建立时间:yyyy-MM-dd,月份:0~11,天:1~31 String randomDate = randomDate("2017-01-01", "2018-01-01"); String DecimalFormat("0000").format(duration); durationString new SimpleDateFormat("yyyy-MM-dd dateString = new HH:mm:ss").format(Long.parseLong(randomDate)); = //拼接 log 日志 StringBuilder logBuilder = new StringBuilder(); logBuilder.append(call1).append(",").append(call2).append(",").ap pend(dateString).append(",") .append(durationString); System.out.println(logBuilder); try { } catch (InterruptedException e) { } return logBuilder.toString(); Thread.sleep(500); e.printStackTrace(); } 4) 创建写入日志方法:writeLog productLog 每产生一条日志,便将日志写入到本地文件中,所以建立一个专门用于日志 写入的方法,需要涉及到 IO 操作,需要注意的是,输出流每次写一条日之后需要 flush,不 然可能导致积攒多条数据才输出一次。最后需要将 productLog 方法放置于 while 死循环中执 行。 //将产生的日志写入到本地文件 calllog 中 public void writeLog(String filePath, ProduceLog productLog) { OutputStreamWriter outputStreamWriter = null; try { = new OutputStreamWriter(new FileOutputStream(filePath, true), "UTF-8"); outputStreamWriter while (true) { String log = productLog.productLog(); outputStreamWriter.write(log + "\n"); outputStreamWriter.flush(); } } catch (Exception e) { e.printStackTrace(); 更多 Java –大数据 –前端 –python 人工智能资料下载,可百度访问:尚硅谷官网
分享到:
收藏