话单分析之数据生产

object Producerlog {

private val startTime ="2020-01-01"

  private val endTime ="2020-12-31"

  private val phoneList =new ListBuffer[String]()

private val phoneNameMap: mutable.Map[String,String] = mutable.Map[String,String]()

def randomBuildTime(startTime:String, endTime:String):String = {

val sdf1 =new SimpleDateFormat("yyyy-MM-dd")

val startDate: Date = sdf1.parse(startTime)

val endDate: Date = sdf1.parse(endTime)

if (endDate.getTime <= startDate.getTime) {

return null

    }

val randomTS: Long = startDate.getTime + ((endDate.getTime - startDate.getTime) * Math.random).toLong

val resultDate =new Date(randomTS)

val sdf2 =new SimpleDateFormat("yyyy-MM-dd HH:mm:ss")

val resultTimeString:String = sdf2.format(resultDate)

resultTimeString

}

def prodtuc():String = {

//主叫号码

    var caller:String =null

    //主叫号码对应的名字

    var callerName :String=null

    //被叫号码

    var callee:String =null

    //被叫号码对应的名字

    var calleeName :String=null

    //取得主叫号码

    val callerIndex = (Math.random() *phoneList.size).toInt

//随机取出一个号码

    caller =phoneList(callerIndex)

//取出根据号码对应的名字

      callerName =phoneNameMap.get(caller).get

val breaks =new Breaks

breaks.breakable(

while(true){

//取得被叫号码

        val callerIndex = (Math.random() *phoneList.size).toInt

//从list中取出被叫号码

        callee =phoneList(callerIndex)

//取得被叫号码名称

        calleeName =phoneNameMap.get(callee).get

if(!(callee == caller)){

breaks.break()

}

} )

val df=new DecimalFormat("0000")

val duration:String = df.format(30 *60 * Math.random())

val sb =new StringBuilder

val value =randomBuildTime(startTime,endTime)

sb.append(caller +",").append(callerName +",").append(callee +",").append(calleeName +",").append(value+",").append(duration+",").append(1)

println("日志:"+sb.toString())

sb.toString()

}

def writeLog(logPath:String): Unit = {

val osw =new OutputStreamWriter(new FileOutputStream(logPath),"UTF-8")

while (true){

//休闲时间

      Thread.sleep(5000)

//生成数据

      val log=prodtuc()

//把数据写入到指定的路径

      osw.write(log +"\n")

//一定要手动flush才可以确保每条数据都写入到文件一次

      osw.flush()

}

}

/**

  * 初始化数据

  */

  def initPhone() ={

phoneList.append("17078388295")

phoneList.append("13980337439")

phoneList.append("14575535933")

phoneList.append("19902496992")

phoneList.append("18549641558")

phoneList.append("17005930322")

phoneList.append("18468618874")

phoneList.append("18576581848")

phoneList.append("15978226424")

phoneList.append("15542823911")

phoneList.append("17526304161")

phoneList.append("15422018558")

phoneList.append("17269452013")

phoneList.append("17764278604")

phoneList.append("15711910344")

phoneList.append("15714728273")

phoneList.append("16061028454")

phoneList.append("16264433631")

phoneList.append("17601615878")

phoneList.append("15897468949")

phoneNameMap.put("17078388295","李雁")

phoneNameMap.put("13980337439","卫艺")

phoneNameMap.put("14575535933","仰莉")

phoneNameMap.put("19902496992","陶欣悦")

phoneNameMap.put("18549641558","施梅梅")

phoneNameMap.put("17005930322","金虹霖")

phoneNameMap.put("18468618874","魏明艳")

phoneNameMap.put("18576581848","华贞")

phoneNameMap.put("15978226424","华啟倩")

phoneNameMap.put("15542823911","仲采绿")

phoneNameMap.put("17526304161","卫丹")

phoneNameMap.put("15422018558","戚丽红")

phoneNameMap.put("17269452013","何翠柔")

phoneNameMap.put("17764278604","钱溶艳")

phoneNameMap.put("15711910344","钱琳")

phoneNameMap.put("15714728273","缪静欣")

phoneNameMap.put("16061028454","焦秋菊")

phoneNameMap.put("16264433631","吕访琴")

phoneNameMap.put("17601615878","沈丹")

phoneNameMap.put("15897468949","褚美丽")

}

def main(args: Array[String]): Unit = {

//传入存放数据的路径

    if(args==null || args.length<=0){

println("没有输入路径")

return

    }

val logPath=args(0)

println(s"存放日志的路径:$logPath")

//初始化数据

    Producerlog.initPhone()

//数据写入到指定的文件

    Producerlog.writeLog(logPath)

}

}

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。