Spark RDD案例:统计网站每月访问量

这个项目利用Spark技术,通过统计网站访问记录中的日期信息,实现了对每月访问量的统计和排序。通过分析数据,我们可以了解到不同月份的网站访问情况,为进一步优化网站内容和推广策略提供数据支持。
在这里插入图片描述

在这里插入图片描述

使用Spark统计网站每月访问量

1. 准备数据文件
  1. 数据文件:准备包含网站访问记录的CSV文件 websiteData.csv,内容格式如下:

    3798675,1628,89957,81E8E153E24DF28E1D38F01FF4A4AA26,2020-5-13 9:06,http://www.tipdm.org/bdrace/tzjingsai/20200113/1628.html?cName=ral_105
    
  2. 上传数据到云主机

    • 将数据文件上传到master节点的/datafiles目录。
  3. 上传文件到HDFS

    • 创建HDFS目录
      hdfs dfs -mkdir -p /websitetraffic/input
      
    • 上传文件到HDFS
      hdfs dfs -put websiteData.csv /websitetraffic/input
      
2. 使用Spark Shell完成任务
  1. 读取文本文件生成RDD

    var lines = sc.textFile("hdfs://master:9000/websitetraffic/input")
    
  2. 获取日期时间数据

    val datetime = lines.map(line => line.split(",")(4))
    datetime.collect
    
  3. 获取日期数据

    val date = datetime.map(datetime => datetime.split(" ")(0))
    date.collect
    
  4. 获取年月日字段

    val fields = date.map(date => date.split("-"))
    fields.collect
    
  5. 获取(年月, 1)键值对

    val wtmap = fields.map(fields => (fields(0) + "-" + fields(1), 1))
    wtmap.collect
    
  6. 按键归约获取每月访问量

    val wt = wtmap.reduceByKey(_ + _)
    wt.collect
    
  7. 按访问量降序排列

    val wt_desc = wt.sortBy(_._2, false)
    wt_desc.collect
    wt_desc.collect.foreach(println)
    
3. 使用Spark项目完成任务
  1. 创建Maven项目

    • 创建Jakarta EE项目,设置项目名称为SparkRDDWebsiteTraffic,选择Java EE 8,不添加依赖。
    • 修改源程序目录为scala
  2. 添加项目相关依赖

    • pom.xml文件中添加Spark依赖,并告知源程序目录已更名为scala
      <dependencies>
          <dependency>
              <groupId>org.apache.spark</groupId>
              <artifactId>spark-core_2.12</artifactId>
              <version>3.1.3</version>
          </dependency>
      </dependencies>
      <build>
          <sourceDirectory>src/main/scala</sourceDirectory>
      </build>
      
  3. 添加Scala SDK

    • 在项目结构中选择【Global Libraries】,添加Scala SDK
  4. 创建日志属性文件

    • resources目录下创建log4j.properties文件
      log4j.rootLogger=ERROR, stdout, logfile
      log4j.appender.stdout=org.apache.log4j.ConsoleAppender
      log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
      log4j.appender.stdout.layout.ConversionPattern=%d %p [%c] - %m%n
      log4j.appender.logfile=org.apache.log4j.FileAppender
      log4j.appender.logfile.File=target/traffic.log
      log4j.appender.logfile.layout=org.apache.log4j.PatternLayout
      log4j.appender.logfile.layout.ConversionPattern=%d %p [%c] - %m%n
      
  5. 创建HDFS配置文件

    • resources目录里创建hdfs-site.xml文件
      <configuration>
          <property>
              <name>dfs.client.use.datanode.hostname</name>
              <value>true</value>
          </property>
      </configuration>
      
  6. 创建网站访问量对象

    • 创建包net.huawei.rdd
    • 在包内创建对象WebsiteTraffic
      package net.huawei.rdd
      
      import org.apache.spark.{SparkConf, SparkContext}
      
      object WebsiteTraffic {
        def main(args: Array[String]): Unit = {
          val conf = new SparkConf().setAppName("SparkRDDWebsiteTraffic").setMaster("local[*]")
          val sc = new SparkContext(conf)
          val inputPath = "hdfs://master:9000/websitetraffic/input"
          val outputPath = "hdfs://master:9000/websitetraffic/output"
      
          val wt = sc.textFile(inputPath)
            .map(line => line.split(",")(4))
            .map(datetime => datetime.split(" ")(0))
            .map(date => date.split("-"))
            .map(fields => (fields(0) + "-" + fields(1), 1))
            .reduceByKey(_ + _)
            .sortBy(_._2, false)
      
          wt.collect.foreach(println)
          wt.saveAsTextFile(outputPath)
      
          sc.stop()
        }
      }
      
  7. 运行程序,查看结果

    • 在控制台查看运行结果
    • 查看HDFS上的结果文件

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/630999.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

平芯微PW4056HH中文规格书

概述 PW4056HH 是一款完整的采用恒定电流/恒定电压的高压、大电流、单节锂离子电池线性充电 IC。充电电流可达 1A。输入 MAX 低工作电压 3.75V&#xff0c;降低充电功耗&#xff0c;提高效率。 PW4056HH 采用了内部 PMOS 架构&#xff0c;加上防反充电路&#xff0c;不需要外部…

白酒:低酒精度白酒的消费特点与市场前景

低酒精度白酒的消费特点与市场前景是酒类市场的一个重要话题。随着品质意识的提高和消费者口味的多样化&#xff0c;低酒精度白酒逐渐受到越来越多的关注。云仓酒庄豪迈白酒作为白酒的品牌之一&#xff0c;其消费特点和市场前景值得深入探讨。 首先&#xff0c;从消费特点来看…

linux Docker在线/离线服务安装并支持centos7和centos8系统

注&#xff1a;以下内容都是经过测试;能在生产环境使用. 一、centos7版本的docker在线安装 1&#xff1a;运行以下命令&#xff0c;下载docker-ce的yum源。 sudo wget -O /etc/yum.repos.d/docker-ce.repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo…

【数据结构】时间、空间复杂度实例分析

跌倒了&#xff0c;就重新站起来&#xff0c;继续向前走&#xff1b;傻坐在地上是没用的。&#x1f493;&#x1f493;&#x1f493; 目录 •✨说在前面 &#x1f34b;知识点一&#xff1a;算法的效率 • &#x1f330;1.斐波那契数列的第n项 • &#x1f330;2.算法的复杂度…

类和对象、包等知识总结Java

类 类的概念&#xff1a;类是用来对一个实体&#xff08;对象&#xff09;进行描述的&#xff0c;主要描述该对象的属性&#xff0c;功能等。 类的定义和实例化 定义 定义类需要用到class关键字 &#xff08;大驼峰定义&#xff09;for example:class Dog... 初步了解一下…

Hadoop3:客户端向HDFS写数据流的流程讲解(较枯燥)

一、场景描述 我们登陆HDFS的web端&#xff0c;上传一个大文件。 二、流程图 三、讲解 流程1&#xff08;Client与NameNode交互&#xff09; 1、HDFS client创建DistributedFileSystem&#xff0c;通过dfs与NameNode进行2次&#xff08;一来一回4次&#xff09;对话&#x…

【UE5.1 角色练习】02-添加慢走、快速跑、蹲伏功能

目录 前言 步骤 一、慢走 二、快速跑 三、蹲伏 前言 在上一篇文章基础上&#xff08;【UE5.1 角色练习】01-使用小白人蓝图控制商城角色移动&#xff09;继续实现角色的慢走、快速跑以及蹲伏功能 步骤 一、慢走 1. 打开项目设置&#xff0c;添加一个操作映射&#x…

uniapp地图电子围栏(多边形)绘制和编辑

uniapp地图电子围栏&#xff08;多边形&#xff09;绘制和编辑 背景实现思路代码实现注意事项尾巴 背景 最近项目中需要在地图上进行电子围栏的绘制和编辑&#xff0c;这里将实现的思路给大家分享下。由于uniapp官方提供的map组件功能不全&#xff0c;还有在APP端&#xff08;…

Java面试题:Spring框架除了IOC和AOP,还有哪些好玩的设计模式?

Spring是一个基于Java的企业级应用程序开发框架&#xff0c;它使用了多种设计模式来实现其各种特性和功能。本文将介绍一些在Spring中使用的常见设计模式以及相应的代码示例和说明。 单例模式 单例模式是Spring中最常用的设计模式之一。在ApplicationContext中&#xff0c;Bean…

5.8 5.9_C语言(初阶)

1、函数 1.1 函数是什么 数学中就见过函数&#xff0c;例&#xff0c;f(x)2*x1,如果给一个不同的数x&#xff0c;就能得到一个不同的f(x),这就是数学中的函数&#xff0c;其实在C语言中跟这非常相似。 维基百科中对函数的定义&#xff1a;子程序 在计算机科学中&#xff0c…

如何对SQL Server中的敏感数据进行加密解密?

为什么需要对敏感数据进行加密&#xff1f; 近几年有不少关于个人数据泄露的新闻&#xff08;个人数据通常包含如姓名、地址、身份证号码、财务信息等&#xff09;&#xff0c;给事发公司和被泄露人都带来了不小的影响。 许多国家和地区都出台了个人数据保护的法律法规&#…

25考研英语长难句Day03

25考研英语长难句Day03 【a.词组】【b.断句】 多亏了电子学和微力学的不断小型化&#xff0c;现在已经有一些机器人系统可以进行精确到毫米以下的脑部和骨骼手术&#xff0c;比技术高超的医生用手能做到的精确得多。 【a.词组】 词组翻译thanks to多亏了&#xff0c;由于cont…

vm 虚拟机 Debian12 开启 root、ssh 登录功能

前言&#xff0c;安装的时候语言就选中文就好了。选择中文&#xff0c;在安装的时候就可以选择国内 163 的源。 开启 ssh 功能 先提权&#xff0c;用 root 账户 su安装 ssh 安装 ssh-server apt install openssh-server启动 ssh systemctl start ssh查看 ssh 状态 systemctl st…

淘宝店铺运营爆流课:助你打造高流量店铺,实现销售持续增长(52节课)

课程目录 01【开店类型第1课】货架式店铺.mp4 02【开店类型第2课】短视频店铺.mp4 03【开店类型第3课】直播型店铺.mp4 04【店铺基础操作第1课】如何发布一个成功的宝贝.mp4 05【店铺基础操作第2课】商品SKU设置技巧及库存设置方法.mp4 06【标题】如何制作一个爆款标题.mp…

网络安全大神是怎么炼成的

首先&#xff0c;兴趣是最好的老师&#xff0c;如果你不感兴趣&#xff0c;建议换一个有兴趣的专业&#xff0c;其次&#xff0c;再来说说你是对信息安全感兴趣&#xff0c;想往安全方面走的&#xff0c;我这边给你一些学习建议。 首先&#xff0c;安全这方面的前景是很好的&a…

TopOn 正式聚合Kwai 旗下程序化广告平台——Kwai Network

**我们非常高兴的宣布&#xff0c;TopOn SDK 近日已正式聚合Kwai Network。**作为Kwai 旗下的程序化广告平台&#xff0c;Kwai Network 通过优质的变现能力及产品能力&#xff0c;为广大开发者提供高效及时的服务。 TopOn 聚合平台与Kwai Network 正式完成接入后&#xff0c;开…

上海市嘉定区三德广场屋顶气膜篮球馆

上海市嘉定区三德广场屋顶气膜篮球馆为现代化城市综合体增添了一处先进、环保的运动设施。这座篮球馆不仅为广场周边居民提供了一个全天候的运动场所&#xff0c;也为嘉定区的体育爱好者带来了全新的健身体验。作为轻空间&#xff08;江苏&#xff09;膜科技有限公司&#xff0…

Linux系统 的持续学习

昨天学习了目录结构、补充命令和配置网络&#xff0c;其中配置网络用了nat方法&#xff0c;今天学习用桥接方法&#xff0c;通配符、正则表达式的一部分内容。 桥接模式 如果重网卡失败&#xff1a; 1.检查配置文件是否正确 2.检查虚拟器编辑器有没有选对&#xff08;网卡类…

谷歌外贸seo优化怎么做?

一般有两种选择&#xff0c;在大型电商平台开展业务&#xff0c;如亚马逊&#xff0c;阿里巴巴等平台&#xff0c;也可以选择搭建自己的独立站 选择在大型电商平台可以方便迅速建立起自己的商铺&#xff0c;不需要考虑太多交易&#xff0c;支付&#xff0c;物流等方面的问题&am…

[AI智能摄像头]RV1126部署yolov5并加速

导出onnx模型 yolov5官方地址 git clone https://github.com/ultralytics/yolov5 利用官方命令导出python export.py --weights yolov5n.pt --include onnx 利用代码导出 import os import sys os.chdir(sys.path[0]) import onnx import torch sys.path.append(..) from m…