大数据全系列 教程
1869个小节阅读:466.6k
目录
408考研
JAVA全系列 教程
面向对象的程序设计语言
Python全系列 教程
Python3.x版本,未来主流的版本
人工智能 教程
顺势而为,AI创新未来
大厂算法 教程
算法,程序员自我提升必经之路
C++ 教程
一门通用计算机编程语言
微服务 教程
目前业界流行的框架组合
web前端全系列 教程
通向WEB技术世界的钥匙
大数据全系列 教程
站在云端操控万千数据
AIGC全能工具班
A A
White Night
####3.3.4 添加数据代码实现
xxxxxxxxxx
private Random random = new Random();
private SimpleDateFormat simpleDateFormat =
new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
/**生成10个用户的在某一年内的通话记录,每个用户产生1000条通话记录
* dnum:对方手机号码 type:呼叫类型 0主叫 1表示被叫 length:通话时长 date:时间
*/
@Test
public void insert() throws Exception {
//1.定义一个List<Put>
List<Put> putList = new ArrayList<Put>();
//2.循环10次,模拟10个用户
for(int i = 0;i<10;i++){
//3.清空putList,防止上次操作的影响
putList.clear();
//4.生成当前用户的手机号码
String phoneNumber = getPhoneNumber("158");
System.out.println(phoneNumber);
//5.模拟每个用户的1000条数据
for(int j=0;j<1000;j++){
//cf:length=,cf:dnum=,cf:date=,cf:type= 0表示主叫 1表示被叫
//6生成每一行通话记录的数据
String dnum = getPhoneNumber("199");
int length = random.nextInt(200)+1;
int type = random.nextInt(2);
String date = getDate(2050);
//7.rowkey设计
String rowkey = phoneNumber+"_"
+(Long.MAX_VALUE-simpleDateFormat.parse(date).getTime())+i+j;
//8.创建put对象
Put put = new Put(Bytes.toBytes(rowkey));
put.addColumn(Bytes.toBytes("basic"),Bytes.toBytes("dnum"),Bytes.toBytes(dnum));
put.addColumn(Bytes.toBytes("basic"),Bytes.toBytes("length"),Bytes.toBytes(length));
put.addColumn(Bytes.toBytes("basic"),Bytes.toBytes("type"),Bytes.toBytes(type));
put.addColumn(Bytes.toBytes("basic"),Bytes.toBytes("date"),Bytes.toBytes(date));
//9将put对象添加putList 勿忘我
putList.add(put);
}
//10.将当前用户的1000条通话记录提交
table.put(putList);
}
}
//2050-01-01 0:0:0 - 2050-12-31 23:59:59
private String getDate(int year) {
Calendar calendar = Calendar.getInstance();
//设置时间
calendar.set(year,0,1);
//随机月份
calendar.add(Calendar.MONTH,random.nextInt(12));
//随机日
calendar.add(Calendar.DAY_OF_MONTH,random.nextInt(31));
//小时数随机
calendar.add(Calendar.HOUR_OF_DAY,random.nextInt(12));
//获取时间对象
Date time = calendar.getTime();
//将时间转换为格式化的字符串并返回
return simpleDateFormat.format(time);
}
/**生成一个手机号码
* @param prefix:手机号码的前三位
* @return 生成的手机号码
*/
private String getPhoneNumber(String prefix) {
return prefix+String.format("%08d",random.nextInt(99999999));
}