尚硅谷大数据技术之电信客服
3.1.1 数据结构
我们将在HBase中存储两个电话号码,以及通话建立的时间和通话持续时间,最后再加上一个flag作为判断第一个电话号码是否为主叫。姓名字段的存储我们可以放置于另外一张表做关联查询,当然也可以插入到当前表中。
表5
列名 |
解释 |
举例 |
call1 |
第一个手机号码 |
15369468720 |
call1_name |
第一个手机号码人姓名(非必须) |
李雁 |
call2 |
第二个手机号码 |
19920860202 |
call2_name |
第二个手机号码人姓名(非必须) |
卫艺 |
date_time |
建立通话的时间 |
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文件配置:
<dependencies> <!-- https://mvnrepository.com/artifact/junit/junit --> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> <scope>test</scope> </dependency> </dependencies> |
1) 随机输入一些手机号码以及联系人,保存于Java的集合中。
新建类:ProductLog
//存放联系人电话与姓名的映射 public Map<String, String> contacts = null; //存放联系人电话号码 public List<String> phoneList = null; public void initContacts() { contacts = new HashMap<String, String>(); phoneList = new ArrayList<String>();
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", "何翠柔"); 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", "冯怜云"); } |