任务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.mzph.cn/bicheng/31451.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

简单了解雪花算法

雪花算法是什么 不多解释。看一看 具体是怎么 生产 唯一ID 的。 ID 由多个数据组合拼接成64位,分别是 时间戳 服务器节点ID 序列号,每个数据项占的位数不固定,可以根据实际需求设置。首位 1 个二进制位 是 符号位。 public long allocate(l…

数字样机:飞行器状态控制系统仿真

引言:数字样机起源于20世纪90年代,是一种用数字化模型代替实际物理样机进行仿真分析的技术。 传统的飞行器研发流程往往遵循一套特定的循环结构:在设计初期,工程人员需要对飞行器提供一个综合的设计思路(初期蓝图&…

“河南省勘察设计资质整合趋势与企业应对“

"河南省勘察设计资质整合趋势与企业应对" 河南省勘察设计资质的整合趋势与企业应对策略可以从以下几个方面来分析: 整合趋势: 资质标准简化与合并:随着国家和地方政府深化“放管服”改革,勘察设计资质的管理趋向简化&…

Linux【实操篇-文件目录类命令】

05【实操篇-文件目录类命令】 1.pwd 显示当前工作目录的绝对路径 pwd:print working directory 打印工作目录 到现在为止,我们还不知道自己在系统的什么地方。在浏览器上,我们能够通过导航栏上的url,了解到自己在互联网上的具体坐标。相似的…

Linux权限理解

目录 一.权限的概念 二.Linux权限管理 1.文件访问者的分类(人) 2.文件类型和访问权限(事物属性) 3.文件权限值的表示方法 4.文件访问权限的相关设置方法 5.修改文件的拥有者 6.修改文件所属组 7.查看或修改文件权限掩码 …

轻松解决Android复杂数据结构序列化

问题描述 当我编写quickupload库时,因为需要在 Service中进行上传任务,向Service传递时我发现需要传递的数据很多并且结构复杂,如果处理不好就会导致以下几个问题 耗时: 需要更多时间进行开发和测试以确保正确的数据处理。容易出错: 由于手…

C语言:指针笔试题

// 输入某一年的第几天,计算并输出它是这一年的第几月第几日。 /* 函数功能: 对给定的某一年的第几天,计算它是这一年的第几月第几日。 函数入口参数: 整形变量year,存储年; 整形变量yearDay,存储某一年的第几天&am…

【ubuntu】用户添加root权限

添加root用户添加新用户并赋予权限 文件只读,无法更改 rootubuntu-server:/home/ubuntu# vi /etc/sudoers rootubuntu-server:/home/ubuntu# vi /etc/sudoers rootubuntu-server:/home/ubuntu# chmod -R 777 /etc/sudoers rootubuntu-server:/home/ubuntu# vi /et…

vue3+Vite项目中引入Element plus组件库及基本使用步骤

一、Element Plus组件库介绍 Element Plus组件库饿了么团队为Vue3发布的组件库,它含有丰富的样式,该组件的官网:element-plus。 二、Element Plus组件安装 (1)通过vscode打开创建的vue项目,本文的项目名称为“shop-admin”,打开项…

56.SQLSERVER中字段,变量判断为空和空字符串

一、字段判断 (1)是否为空 select * from department where leader is NULL select * from department where leader is not NULL (2)是否为空字符‘’ select * from department where leader select * from department wh…

微信小程序/uni-app tabBar 页面传参问题

先看下他们的文档 1、微信小程序 https://developers.weixin.qq.com/miniprogram/dev/api/route/wx.switchTab.html 需要跳转的 tabBar 页面的路径 (代码包路径)(需在 app.json 的 tabBar 字段定义的页面),路径后不能带参数。 2、uni-app …

【CT】LeetCode手撕—415. 字符串相加

目录 题目1- 思路2- 实现⭐415. 字符串相加——题解思路 3- ACM 实现 题目 原题连接:415. 字符串相加 1- 思路 模式识别:字符串相加 逆向遍历过程模拟 数据结构 ① String res :记录res 、② carry 记录进位值① 定义两个整数遍历 nums1 …

51单片机宏定义的例子

代码 demo.c #include "hardware.h"void delay() {volatile unsigned int n;for(n 0; n < 50000; n); }int main(void) {IO_init();while(1){PINSET(LED);delay();PINCLR(LED);delay();}return 0; }cfg.h #ifndef _CFG_H_ #define _CFG_H_// #define F_CPU …

生成模型的两大代表:VAE和GAN

生成模型 给定数据集&#xff0c;希望生成模型产生与训练集同分布的新样本。对于训练数据服从\(p_{data}(x)\)&#xff1b;对于产生样本服从\(p_{model}(x)\)。希望学到一个模型\(p_{model}(x)\)与\(p_{data}(x)\)尽可能接近。 这也是无监督学习中的一个核心问题——密度估计…

python根据excel的文件创建文件夹

这几天要整理一点文档&#xff0c;需要批量生成一些文件夹&#xff0c;&#xff08;其实也可以进一步自动生成各种文档&#xff09;&#xff0c;用到了py的功能&#xff0c;在此记录一下。 1.准备工作 需要两个库支持openpyxl和os 安装 pip install openpyxl2.代码思路 打算…

AI穿戴设备是未来手机的终结者?中国AI商业化的未来预测

AI技术的发展正处于商业化应用的关键阶段&#xff0c;而中国在互联网时代已凭借商业化应用逆袭。AI算法大模型虽强大&#xff0c;但真正普惠民众需与设备深度结合。穿戴式智能设备就成为了新战场&#xff0c;AI算法与穿戴设备结合能释放更大工作效率。私人助理AI将成趋势&#…

锐捷统一上网行为管理与审计系统 static_convert.php 前台RCE漏洞复现

0x01 产品简介 锐捷统一上网行为管理与审计RG-UAC系列是星网锐捷网络有限公司自主研发的上网行为管理与审计产品,具备的上网行为日志审计功能,能够全面、准确、细致的审计并记录多种上网行为日志,包括网页、搜索、外发文件、邮件、论坛、IM等等,并对日志数据进行统计分析,…

开发者上架ios系统iphone苹果xcode签名的封装应用ipa文件用于四个分类怎么选择打包方式?苹果App打包方式及其应用场景分析

作为一名代码研发工程师&#xff0c;在苹果应用开发过程中&#xff0c;我们需要了解和掌握各种打包方式。本文将详细介绍苹果App有哪些打包方式&#xff0c;以及每种方式的代表、作用、优势和应用场景。 1. iOS App Store Deployment&#xff08;iOS应用程序商店部署&#x…

【杂记-浅谈物理层-数据链路层-网络层数据传输过程】

OSI各层传输的数据单位 一、物理层1、概述2、功能 二、数据链路层1、概述2、功能 三、网络层1、概述2、功能 一、物理层 1、概述 物理层是OSI模型的最底层&#xff0c;负责在物理媒介上传输比特流&#xff0c;即二进制的0和1。它定义了物理设备的接口类型、传输速率、电缆标准…

gstreamer+qt5实现简易视频播放器

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、安装环境1.QT52.gstreamer 二、代码1.Windows实现 三、测试效果总结 前言 最近在研究mpp&#xff0c;通过gstreamer实现了硬解码&#xff0c;但是我在想我…