日志生成

  1. package zx.Utils
  2.  
  3. import java.io.{File, FileWriter}
  4. import java.util.Calendar
  5. import org.apache.commons.lang.time.{DateUtils, FastDateFormat}
  6.  
  7. import scala.collection.mutable.ArrayBuffer
  8. import scala.util.Random
  9.  
  10. /**
  11. * Created by 166 on 2017/9/6.
  12. */
  13. case class FlowLog(time:String,ip:String,upFlow:Long,downFlow:Long) extends Serializable{
  14. override def toString: String = {
  15. s"$time\t$ip\t$upFlow\t$downFlow"
  16. }
  17. }
  18. object CreateLog {
  19. val ip_buffer: StringBuilder = new StringBuilder
  20. private val fs: FastDateFormat = FastDateFormat.getInstance("yyyy-MM-dd HH:mm:ss")
  21. var startTime:String="2015-1-12 12:12:12"
  22. val instance: Calendar = Calendar.getInstance
  23. val ipPool:ArrayBuffer[String]=getIp //ipPool 取得20个ip
  24.  
  25. //取得20个ip地址
  26. private [this] def getIp:ArrayBuffer[String]={
  27. val arrayBuffer: ArrayBuffer[String] = ArrayBuffer()
  28. ip_buffer.clear()
  29. for(i<- to ){
  30. ip_buffer.append(Random.nextInt()).append(".")
  31. .append(Random.nextInt()).append(".")
  32. .append(Random.nextInt()).append(".")
  33. .append(Random.nextInt())
  34. arrayBuffer+=ip_buffer.toString()
  35. ip_buffer.clear()
  36. }
  37. arrayBuffer
  38. }
  39.  
  40. def getTime:String={
  41. instance.setTime(DateUtils.parseDate(startTime,Array("yyyy-MM-dd HH:mm:ss")))
  42. instance.add(Calendar.MINUTE,Random.nextInt())
  43. val newTime: String = fs.format(instance.getTime)
  44. startTime=newTime
  45. newTime
  46. }
  47.  
  48. def getFlow:Long={
  49. Random.nextInt()
  50. }
  51.  
  52. //从ip地址池中取出一个ip
  53. def getIP:String={
  54. ipPool(Random.nextInt(ipPool.size))
  55. }
  56.  
  57. //把日志写入文件
  58. def write2file(fr:FileWriter,context:String)={
  59. fr.write(context)
  60. fr.write(System.lineSeparator())
  61. fr.flush()
  62. "SUCCESS"
  63. }
  64.  
  65. def main(args: Array[String]) {
  66. val file: File = new File("C:\\Users\\166\\Desktop\\Data\\Log","click_flow.log")
  67. if(file.exists()){
  68. file.delete()
  69. val fw: FileWriter = new FileWriter(file)
  70. for(i<- to )println(write2file(fw,FlowLog(getTime,getIP,getFlow,getFlow).toString))
  71. fw.close()
  72. }else{
  73. val fw: FileWriter = new FileWriter(file)
  74. for(i<- to )println(write2file(fw,FlowLog(getTime,getIP,getFlow,getFlow).toString))
  75. fw.close()
  76. }
  77. }
  78. }

算出每个用户的上行流量总和 和下行流量的总和

  1. package zx.sparkStream
  2.  
  3. import org.apache.log4j.{Level, Logger}
  4. import org.apache.spark.rdd.RDD
  5. import org.apache.spark.{SparkConf, SparkContext}
  6. /**需求:算出每个用户的上行流量总和 和下行流量的总和
  7. * Created by rz on 2017/9/6.
  8. */
  9. case class ResultTuple()
  10. case class ClickFlow(remoteUser:String,tupleFlow:(Long,Long))
  11. object SparkOffLine {
  12. def main(args: Array[String]) {
  13. Logger.getLogger("org.apache.spark").setLevel(Level.OFF)
  14. val sc: SparkContext = new SparkContext(new SparkConf().setAppName("SparkOffLine").setMaster("local[*]"))
  15. val rdd: RDD[String] = sc.textFile("C:\\Users\\166\\Desktop\\Data\\Log\\click_flow.log")
  16. val rdd1:RDD[(String,ClickFlow)]=rdd.map(data=>{
  17. val datas:Array[String]= data.split("\t")
  18. (datas(),ClickFlow(datas(),(datas().toLong,datas().toLong)))
  19.  
  20. })
  21. val rdd2:RDD[(String,ClickFlow)]=rdd1.reduceByKey((x,y)=>{
  22. val x_upFlow: Long = x.tupleFlow._1
  23. val y_upFlow: Long = y.tupleFlow._1
  24. val x_dowmFlow: Long = x.tupleFlow._2
  25. val y_downFlow: Long = y.tupleFlow._2
  26. ClickFlow(x.remoteUser,(x_upFlow+y_upFlow,x_dowmFlow+y_downFlow))
  27. })
  28.  
  29. println(rdd2.collect().toBuffer)
  30. }
  31. }

Spark- 流量日志分析的更多相关文章

  1. 【Hadoop离线基础总结】流量日志分析网站整体架构模块开发

    目录 数据仓库设计 维度建模概述 维度建模的三种模式 本项目中数据仓库的设计 ETL开发 创建ODS层数据表 导入ODS层数据 生成ODS层明细宽表 统计分析开发 流量分析 受访分析 访客visit分 ...

  2. 024 关于spark中日志分析案例

    1.四个需求 需求一:求contentsize的平均值.最小值.最大值 需求二:请各个不同返回值的出现的数据 ===> wordCount程序 需求三:获取访问次数超过N次的IP地址 需求四:获 ...

  3. ELK大流量日志分析系统搭建

    1.首先说下EKL到底是什么吧? ELK是Elasticsearch(相当于仓库).Logstash(相当于旷工,挖矿即采集数据).Kibana(将采集的数据展示出来)的简称,这三者是核心套件,但并非 ...

  4. Spark离线日志分析,连接Spark出现报错

    首先,我的代码是这样的 import org.apache.spark.rdd.RDD import org.apache.spark.{SparkConf, SparkContext} object ...

  5. 【Hadoop离线基础总结】网站流量日志数据分析系统

    目录 点击流数据模型 概述 点击流模型 网站流量分析 网站流量模型分析 网站流量来源 网站流量多维度细分 网站内容及导航分析 网站转化及漏斗分析 流量常见分析角度和指标分类 指标概述 指标分类 分析角 ...

  6. 【慕课网实战】八、以慕课网日志分析为例 进入大数据 Spark SQL 的世界

    用户行为日志:用户每次访问网站时所有的行为数据(访问.浏览.搜索.点击...)     用户行为轨迹.流量日志   日志数据内容: 1)访问的系统属性: 操作系统.浏览器等等 2)访问特征:点击的ur ...

  7. 苏宁基于Spark Streaming的实时日志分析系统实践 Spark Streaming 在数据平台日志解析功能的应用

    https://mp.weixin.qq.com/s/KPTM02-ICt72_7ZdRZIHBA 苏宁基于Spark Streaming的实时日志分析系统实践 原创: AI+落地实践 AI前线 20 ...

  8. 《UNIX/Linux网络日志分析与流量监控》新书发布

    本书从UNIX/Linux系统的原始日志(Raw Log)采集与分析讲起,逐步深入到日志审计与计算机取证环节.书中提供了多个案例,每个案例都以一种生动的记事手法讲述了网络遭到入侵之后,管理人员开展系统 ...

  9. 《Unix/Linux网络日志分析与流量监控》获2015年度最受读者喜爱的IT图书奖

    <Unix/Linux网络日志分析与流量监控>获2015年度最受读者喜爱的IT图书奖.刊登在<中华读书报>( 2015年01月28日 19 版) 我的2015年新作刊登在< ...

  10. 《Unix/Linux日志分析与流量监控》书稿完成

    <Unix/Linux日志分析与流量监控>书稿完成 近日,历时3年创作的75万字书稿已完成,本书紧紧围绕网络安全的主题,对各种Unix/Linux系统及网络服务日志进行了全面系统的讲解,从 ...

随机推荐

  1. 高速上手Unity中最好的补间动画插件DFTween

     出处:http://blog.csdn.net/u010019717 author:孙广东      时间:2015.3.17   23:00 DFTween 是一个在 Unity 游戏引擎中高 ...

  2. jquery的push()

    JavaScript push() 方法 JavaScript Array 对象 定义和用法 push() 方法可向数组的末尾添加一个或多个元素,并返回新的长度. 语法 arrayObject.pus ...

  3. smarty模版使用php标签,如何获取模版变量

    smarty模版使用php标签,如何获取模版变量 in: 后端程序 已经assign一个模版变量$assign,由于要做特殊的循环输出,使用for循环,因此使用到了php标签,但是php语句和模版语句 ...

  4. ubuntu openfire Server install

    1.首先登录到ubuntu server.在安装openfire 服务器之前,先确保你的系统已经更新到最新.然后输入下面的命令,一行一行执行,最后安装可用的更新 sudo apt-get update ...

  5. cocos2d-x 2.x 支持多个方向屏幕翻转

    主要改动 RootViewController.mm 的 supportedInterfaceOrientations 方法 1.四个方向 UIInterfaceOrientationMaskAll ...

  6. 如何创建AnjularJS项目

    第一步:命名空间 var applyAppModule=angular.module('apply-app' ,[]);    第二步:控制器 ng-controller="ApplyCon ...

  7. Linux删除乱码文件的方法

    当文件名为乱码的时候,无法通过键盘输入文件名,所以在终端下就不能直接利用rm,mv等命令管理文件了. 我们可以通过以下几种方法删除linux下的乱码文件.(文件名为乱码) l  方法1 我们知道每个文 ...

  8. IOS启动页动画(uiview 淡入淡出效果 )2

    Appdelegate里面右个这个函数,只要它没结束,你的等待界面就不会消失.以在启动的时候做些动画 - (BOOL)application:(UIApplication *)application ...

  9. poj2816

    Popular Cows Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 29799   Accepted: 12090 De ...

  10. dubbo启动报错多个资源争缓存问题

    Dubbo Failed to save registry store file, cause: Can not lock the registry cache file 目录(?)[+] 启动的Du ...