日志生成

package zx.Utils

import java.io.{File, FileWriter}
import java.util.Calendar
import org.apache.commons.lang.time.{DateUtils, FastDateFormat} import scala.collection.mutable.ArrayBuffer
import scala.util.Random /**
* Created by 166 on 2017/9/6.
*/
case class FlowLog(time:String,ip:String,upFlow:Long,downFlow:Long) extends Serializable{
override def toString: String = {
s"$time\t$ip\t$upFlow\t$downFlow"
}
}
object CreateLog {
val ip_buffer: StringBuilder = new StringBuilder
private val fs: FastDateFormat = FastDateFormat.getInstance("yyyy-MM-dd HH:mm:ss")
var startTime:String="2015-1-12 12:12:12"
val instance: Calendar = Calendar.getInstance
val ipPool:ArrayBuffer[String]=getIp //ipPool 取得20个ip //取得20个ip地址
private [this] def getIp:ArrayBuffer[String]={
val arrayBuffer: ArrayBuffer[String] = ArrayBuffer()
ip_buffer.clear()
for(i<- to ){
ip_buffer.append(Random.nextInt()).append(".")
.append(Random.nextInt()).append(".")
.append(Random.nextInt()).append(".")
.append(Random.nextInt())
arrayBuffer+=ip_buffer.toString()
ip_buffer.clear()
}
arrayBuffer
} def getTime:String={
instance.setTime(DateUtils.parseDate(startTime,Array("yyyy-MM-dd HH:mm:ss")))
instance.add(Calendar.MINUTE,Random.nextInt())
val newTime: String = fs.format(instance.getTime)
startTime=newTime
newTime
} def getFlow:Long={
Random.nextInt()
} //从ip地址池中取出一个ip
def getIP:String={
ipPool(Random.nextInt(ipPool.size))
} //把日志写入文件
def write2file(fr:FileWriter,context:String)={
fr.write(context)
fr.write(System.lineSeparator())
fr.flush()
"SUCCESS"
} def main(args: Array[String]) {
val file: File = new File("C:\\Users\\166\\Desktop\\Data\\Log","click_flow.log")
if(file.exists()){
file.delete()
val fw: FileWriter = new FileWriter(file)
for(i<- to )println(write2file(fw,FlowLog(getTime,getIP,getFlow,getFlow).toString))
fw.close()
}else{
val fw: FileWriter = new FileWriter(file)
for(i<- to )println(write2file(fw,FlowLog(getTime,getIP,getFlow,getFlow).toString))
fw.close()
}
}
}

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

package zx.sparkStream

import org.apache.log4j.{Level, Logger}
import org.apache.spark.rdd.RDD
import org.apache.spark.{SparkConf, SparkContext}
/**需求:算出每个用户的上行流量总和 和下行流量的总和
* Created by rz on 2017/9/6.
*/
case class ResultTuple()
case class ClickFlow(remoteUser:String,tupleFlow:(Long,Long))
object SparkOffLine {
def main(args: Array[String]) {
Logger.getLogger("org.apache.spark").setLevel(Level.OFF)
val sc: SparkContext = new SparkContext(new SparkConf().setAppName("SparkOffLine").setMaster("local[*]"))
val rdd: RDD[String] = sc.textFile("C:\\Users\\166\\Desktop\\Data\\Log\\click_flow.log")
val rdd1:RDD[(String,ClickFlow)]=rdd.map(data=>{
val datas:Array[String]= data.split("\t")
(datas(),ClickFlow(datas(),(datas().toLong,datas().toLong))) })
val rdd2:RDD[(String,ClickFlow)]=rdd1.reduceByKey((x,y)=>{
val x_upFlow: Long = x.tupleFlow._1
val y_upFlow: Long = y.tupleFlow._1
val x_dowmFlow: Long = x.tupleFlow._2
val y_downFlow: Long = y.tupleFlow._2
ClickFlow(x.remoteUser,(x_upFlow+y_upFlow,x_dowmFlow+y_downFlow))
}) println(rdd2.collect().toBuffer)
}
}

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. 详细解读:远程线程注入DLL到PC版微信

    一.远程线程注入的原理 1.其基础是在 Windows 系统中,每个 .exe 文件在双击打开时都会加载 kernel32.dll 这个系统模块,该模块中有一个 LoadLibrary() 函数,可以 ...

  2. Word 操作

    1.出文件,最后一页是附件.最后一页的页码不想要.如何删除?用的是 office word 2010版本,跟07 03版本界面不一样. 在最后一页的最前面插入分节符:下一页 ,编辑页脚.让页脚“取消链 ...

  3. iOS SDWebImage加载大图导致内存崩溃解决方案

    static BOOL SDImageCacheOldShouldDecompressImages = YES; static BOOL SDImagedownloderOldShouldDecomp ...

  4. iOS中三种方式实现登录界面播放视频或gif效果

    现在app都做的越来越炫酷,各种动画效果,各种特效很好的提高了用户的体验.很多app在登录界面都使用了动画效果,比如Uber,Keep,QQ等等.这些动画效果基本都是使用gif或者MP4来实现的. 效 ...

  5. use-svn-cmd(Linux)

    SVN是Subversion的简称,是一个开放源代码的版本控制系统,它采用了分支管理系统,是一个跨平台的软件,支持大多数常见的操作系统. svn命令行使用: 1.查看svn所支持的全部命令 $ svn ...

  6. linux系统寻找僵尸进程

    1. 用top命令来查看服务器当前是否有僵尸进程. 2. 用ps和grep命令寻找僵尸进程 $ ps -A -ostat, pid, ppid, cmd | grep -e '^[Zz]' 命令解释: ...

  7. ubuntu中文乱码--添加中文字符集

    在Ubuntu支持中文后(方法见上篇文章),默认是UTF-8编码,而Windows中文版默认是GBK编码.为了一致性,通常要把Ubuntu的默认 编码改为GBK.当然你也可以不改,但这会导致我们在两个 ...

  8. Ionic项目打包安卓APK

    之前用Ionic+Angular做了几个小应用Demo,现在用其中一个做实验试下打包安卓的APK安装包.(备注:我用的应用demo是之前博客里写的汇率的Demo,不清楚的同学可以查哈~) 我是用ion ...

  9. 功能强大的图片截取修剪神器:Android SimpleCropView及其实例代码重用简析(转)

    功能强大的图片截取修剪神器:Android SimpleCropView及其实例代码重用简析 SimpleCropView是github上第一个第三方开源的图片修剪截取利器,功能强大,设计良好.我个人 ...

  10. VMWare虚拟机下为Ubuntu 12.04.2配置静态IP(NAT方式)

    http://www.cnblogs.com/objectorl/archive/2012/09/27/vmware-ubuntu-nat-static-ip-settings.html 参考以上方式 ...