尚硅谷大数据技术之电信客服

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 编写代码

思路:

  1. a) 创建Java集合类存放模拟的电话号码和联系人;
  2. b) 随机选取两个手机号码当作“主叫”与“被叫”(注意判断两个手机号不能重复),产出call1与call2字段数据;
  3. c) 创建随机生成通话建立时间的方法,可指定随机范围,最后生成通话建立时间,产出date_time字段数据;
  4. 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", "冯怜云");

}