模拟生成数据脚本

/*** 向文件中生产数据*/
object ProducePvAndUvData {//ipval IP = 223//地址val ADDRESS = Array("北京", "天津", "上海", "重庆", "河北", "辽宁","山西","吉林", "江苏", "浙江", "黑龙江", "安徽", "福建", "江西","山东", "河南", "湖北", "湖南", "广东", "海南", "四川","贵州", "云南", "山西", "甘肃", "青海", "台湾", "内蒙","广西", "西藏", "宁夏", "新疆", "香港", "澳门")//日期val DATE = new SimpleDateFormat("yyyy-MM-dd").format(new Date())//timestampval TIMESTAMP = 0L//useridval USERID = 0L//网站val WEBSITE = Array("www.baidu.com", "www.taobao.com", "www.dangdang.com", "www.jd.com", "www.suning.com", "www.mi.com", "www.gome.com.cn")//行为val ACTION = Array("Regist", "Comment", "View", "Login", "Buy", "Click", "Logout")def main(args: Array[String]): Unit = {val pathFileName = "G://idea//scala//spark02/data"//创建文件val createFile = CreateFile(pathFileName)//向文件中写入数据 需要的对象val file = new File(pathFileName)val fos = new FileOutputStream(file, true)val osw = new OutputStreamWriter(fos, "UTF-8")val pw = new PrintWriter(osw)if (createFile) {var i = 0//产生5万+数据while (i < 50000){ //模拟一个ipval random = new Random()val ip = random.nextInt(IP) + "." + random.nextInt(IP) + "." + random.nextInt(IP) + "." + random.nextInt(IP)//模拟地址val address = ADDRESS(random.nextInt(34))//模拟日期val date = DATE//模拟useridval userid = Math.abs(random.nextLong)/*** 这里的while模拟是同一个用户不同时间点对不同网站的操作*/var j = 0var timestamp = 0Lvar webSite = "未知网站"var action = "未知行为"val flag = random.nextInt(5) | 1while (j < flag) { //                   Threads.sleep(5);//模拟timestamptimestamp = new Date().getTime()//模拟网站webSite = WEBSITE(random.nextInt(7))//模拟行为action = ACTION(random.nextInt(6))j += 1/*** 拼装*/val content = ip + "\t" + address + "\t" + date + "\t" + timestamp + "\t" + userid + "\t" + webSite + "\t" + actionSystem.out.println(content)//向文件中写入数据pw.write(content + "\n")}i += 1}//注意关闭的先后顺序,先打开的后关闭,后打开的先关闭pw.close()osw.close()fos.close()}}/*** 创建文件*/def CreateFile(pathFileName: String): Boolean = {val file = new File(pathFileName)if (file.exists) file.deleteval createNewFile = file.createNewFile()System.out.println("create file " + pathFileName + " success!")createNewFile}
}

统计每个网站的PU、VU、每个网站的每个地区访问量,由大到小排序

 def main(args: Array[String]): Unit = {val conf = new SparkConf()conf.setMaster("local")conf.setAppName("SparkPvAndUv")val sc = new SparkContext(conf)val rdd: RDD[String] = sc.textFile("G:/idea/scala/spark02/data")println("*************PU******************")rdd.map(line=>{(line.split("\t")(5),1)}).reduceByKey(_+_).sortBy(_._2,false)//是否降序,false:是降序.foreach(println)println("*************UV******************")rdd.map(line=>line.split("\t")(5)+"_"+line.split("\t")(1))//网站_ip.distinct()//去重.map(line=>{(line.split("_")(0),1)}).reduceByKey(_+_).sortBy(_._2,false).foreach(println)//每个网址的每个地区访问量,由大到小排序val site_local: RDD[(String, String)] = rdd.map(line=>{(line.split("\t")(5),line.split("\t")(1))})val site_localIterable: RDD[(String, Iterable[String])] = site_local.groupByKey()val result: RDD[(String, AbstractSeq[(String, Int)])] = site_localIterable.map(one => {val localMap = mutable.Map[String, Int]()//可变mapval site = one._1val localIterator = one._2.iteratorwhile (localIterator.hasNext) {//地区val local = localIterator.next()if (localMap.contains(local)) {//如果map中有该地区,则获取该地区的值再加1val value = localMap.get(local).getlocalMap.put(local, value + 1)} else {//如果map中没有该地区,则获取该地区的值再加1localMap.put(local, 1);}}//默认是升序,降序:localMap.toList.sortBy(-_._2),既多一个"-"val tuples: List[(String, Int)] = localMap.toList.sortBy(-_._2)if (tuples.length > 3) {val list = new ListBuffer[(String, Int)]()for (i <- 0 to 2) {list.append(tuples(i))}(site, list)} else {(site, tuples)}})result.foreach(println)}

转载于:https://my.oschina.net/u/3962987/blog/3080805

大数据项目-01--PU、VU、每个网站的每个地区访问量?相关推荐

  1. 大数据项目实战——基于某招聘网站进行数据采集及数据分析(四)

    大数据项目实战 第四章 数据预处理 文章目录 大数据项目实战 学习目标 一.分析预处理数据 1)salary 2)city 3)skillLabels 4)companyLabelList.posit ...

  2. 实时可视化大数据项目01 -- 项目介绍

    1.项目架构 OGG + FileBeat + Kafka + Logstash + ElaticSearch + SpringBoot + Echarts + Jquery 2.项目介绍 1.项目是 ...

  3. 2022年首个退役的Apahce大数据项目

    作者:明哥 来源:明哥的IT随笔 编辑:数据一哥 全文共2988个字,建议8分钟阅读 01 Ambari 正式退役 正所谓几家欢乐几家愁,2022 年初,又一款顶级 Apache 大数据项目,正式宣告 ...

  4. 企业大数据项目规划落地实施路线图

    一般来说,一个完整的大数据项目实施,需要经过开发环境搭建.集群环境部署.数据采集.数据存储与交换.数据离线与实时分析.大数据可视化等多个实现流程,这就要求系统掌握大数据技术知识. 下面以一个完整的大数 ...

  5. 大数据项目交付国标_在紧迫的期限内交付大型项目

    大数据项目交付国标 by Paul McGillivray 保罗·麦吉里夫瑞(Paul McGillivray) 在紧迫的期限内交付大型Web项目 (Delivering a big web proj ...

  6. 掰一掰GitHub上优秀的大数据项目

    VMware CEO Pat Gelsinger曾说:   数据科学是未来,大数据分析则是打开未来之门的钥匙 企业正在迅速用新技术武装自己以便从大数据项目中获益.各行业对大数据分析人才的需求也迫使我们 ...

  7. 助力工业物联网,工业大数据项目介绍及环境构建【一、二】

    文章目录 工业大数据项目介绍及环境构建 01:专栏目标 02:项目背景 03:项目需求 04:业务流程 05:技术选型 06:Docker的介绍 07:Docker的网络 08:Docker的使用 0 ...

  8. Cris 小哥哥的大数据项目之 Hive 统计 YouTube 热门视频

    Cris 小哥哥的大数据项目之 Hive 统计 YouTube 热门视频 Author:Cris 文章目录 Cris 小哥哥的大数据项目之 Hive 统计 YouTube 热门视频 Author:Cr ...

  9. 电商数仓描述_笔记-尚硅谷大数据项目数据仓库-电商数仓V1.2新版

    架构 项目框架 数仓架构 存储压缩 Snappy与LZO LZO安装: 读取LZO文件时,需要先创建索引,才可以进行切片. 框架版本选型Apache:运维麻烦,需要自己调研兼容性. CDH:国内使用最 ...

最新文章

  1. 【Android 应用开发】 Android 各种版本简介 ( Support 支持库版本 | Android Studio 版本 | Gradle 版本 | jcenter 库版本 )
  2. php7实践指南图书手册
  3. 蓝桥杯比赛常考算法_备战蓝桥--算法竞赛入门第一章总结
  4. echartsx轴按当前时间自动移动 vue_FANUC系统如何追加第四轴?
  5. SLAM的评价指标、真实值、估计值及误差分析(转)
  6. 【Java面试题】计算一个数字的立方根,不使用库函数
  7. 牛客题霸 [连续子数组的最大和] C++题解/答案
  8. SpringBoot学习---整合JDBC,Druid,MyBatis
  9. Java 项目经典代码
  10. 物体检测学习笔记-3D相机成像原理简介
  11. 思科、华为路由器破解过程
  12. [Sencha ExtJS amp; Touch] 在Sencha(Extjs/Touch)应用程序中使用plugins(插件)和mixins(混入)...
  13. html调色板快捷键,在线网页调色板
  14. Ckplayer视频播放器使用方法介绍
  15. 示波器探头对测量可能引起的10种影响
  16. 操作系统安全防范措施
  17. 老台式计算机怎么调亮度,老台式电脑亮度怎么调
  18. 【保姆级】扫雷游戏的设计与实现【C语言】
  19. 浅谈Java设计之——Java初始化数组(List/Map)时为何要空数组而不是null
  20. 【新手上路常见问答】关于自然语言处理(NLP)

热门文章

  1. 初中数学结合计算机教学设计,初中数学教学设计中多媒体技术的运用
  2. 2019电赛----模拟电磁曲射炮
  3. 腾讯企业 html邮件模板,腾讯企业邮箱DMARC设置指南(TXT记录)
  4. FL中隐私和安全性问题
  5. ABAP动态模式(Dynamic Pattern)
  6. 【渝粤教育】电大中专新媒体营销实务 作业 题库
  7. 报错(SQLite 3.8.3 or later is required (found 3.7.17).)的解决办法
  8. java中设置基偶隔行换色_隔行变色 - 李俊互联网技术传播者 - 博客园
  9. 智能体温监测预警系统方案开发
  10. 华为Android岗面经;群面+技术面+英语面+面试题详解