当前位置: 首页 > news >正文

任务4.8.3 利用SparkSQL统计每日新增用户

在这里插入图片描述

实战概述:利用SparkSQL统计每日新增用户

任务背景

在大数据时代,快速准确地统计每日新增用户是数据分析和业务决策的重要部分。本任务旨在使用Apache SparkSQL处理用户访问历史数据,以统计每日新增用户数量。

任务目标
  • 处理用户访问历史数据。
  • 统计并输出每日新增用户数。
数据准备
  • 原始数据格式:每行包含用户访问日期和用户名,以逗号分隔。
  • 示例数据:
    2024-05-01,mike
    2024-05-01,alice
    ...
    
解决思路
  • 使用倒排索引法,将用户名映射到其访问日期。
  • 确定每个用户的最小访问日期作为新增日期。
  • 统计每个日期的出现次数,得出新增用户数。
实现步骤
交互式实现
  1. 启动Spark Shell

    spark-shell --master spark://master:7077
    
  2. 读取用户文件,创建单列DataFrame

    val df = spark.read.text("hdfs://master:9000/newusers/input/users.txt")
    
  3. 数据转换,将单列DataFrame转换成多列DataFrame

    val userDF = df.withColumn("date", split(col("value"), ",")(0)).withColumn("name", split(col("value"), ",")(1)).drop("value")
    
  4. 创建临时视图

    userDF.createOrReplaceTempView("t_user")
    
  5. 使用SQL查询统计每日新增用户数

    val result = spark.sql("""SELECT date, COUNT(name) AS countFROM (SELECT name, MIN(date) AS dateFROM t_userGROUP BY name)GROUP BY dateORDER BY date
    """)
    
  6. 输出结果

    result.show()
    
Spark项目实现
  1. 创建Maven项目,配置Scala和Spark依赖。

  2. 添加Scala SDK,准备编写Scala程序。

  3. 创建日志配置文件log4j.properties

  4. 创建HDFS配置文件hdfs-site.xml

  5. 编写Scala对象CountNewUsers,实现数据读取、转换、SQL查询和结果输出。

  6. 运行程序,查看HDFS上的输出结果。

结果验证
  • 验证输出结果与期望统计结果一致。
  • 示例期望结果:
    +----------+-----+
    |      date|count|
    +----------+-----+
    |2024-05-01|    3|
    |2024-05-02|    1|
    |2024-05-03|    2|
    +----------+-----+
    
总结

本实战概述提供了使用Apache SparkSQL处理用户访问数据并统计每日新增用户数的详细步骤。通过交互式实现和项目化实现两种方式,本概述确保了任务的可操作性和可复现性。通过实战,可以加深对SparkSQL数据处理能力的理解,并掌握实际应用中的操作技巧。

http://www.lryc.cn/news/378537.html

相关文章:

  • DS知识点总结--线性表定义及顺序表示
  • 百度文库AI产品“橙篇”:支持10万字长文生成,开启AI创作新篇章
  • wsl子系统ubuntu20.04 设置docker服务开机自启动
  • SAP ScreenPersonas
  • 充电学习—3、Uevent机制和其在android层的实现
  • “河南省勘察设计资质整合趋势与企业应对“
  • 简单了解雪花算法
  • 决策树算法详细介绍原理和实现
  • vue:vue2与vue3如何全局注册公共组件(包括涉及到的相关方法函数的讲解)
  • LoRa126X系列LoRa模块:专为物联网设计而生
  • 个人职业规划(含前端职业线路、前端技术线路、前端核心竞争力、大龄程序员的出路)
  • 【设计模式深度剖析】【10】【行为型】【状态模式】
  • API低代码平台介绍5-数据库记录修改功能
  • git commit撤销修改
  • 深入理解RunLoop
  • Elasticsearch term 查询:精确值搜索
  • IntelliJ IDEA调试技巧
  • NGINX_六 nginx 日志文件详解
  • 第6章 工程项目融资 作业
  • 网站安全防护怎么做?
  • 泵设备的监测控制和智慧运维
  • 【智能算法应用】基于混合粒子群-蚁群算法的多机器人多点送餐路径规划问题
  • Java中的JVM调优技巧
  • 软件工程-第4章结构化编码和测试
  • MMDetection 目标检测 —— 环境搭建和基础使用
  • C# 实现draw一个简单的温度计
  • 解放双手,让流程自动化软件助你一臂之力
  • 邀请函 | 桥田智能出席AMTS展会 家族新成员正式发布
  • 安卓开发使用proxyman监控真机
  • ruoyi登录功能源码分析