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

【大数据基础】基于零售交易数据的Spark数据处理与分析

环境搭建

sudo apt-get install python3-pip
pip3 install bottle

在这里插入图片描述

数据预处理

首先,将数据集E_Commerce_Data.csv上传至hdfs上,命令如下:

./bin/hdfs dfs -put /home/hadoop/E_Commerce_Data.csv /user/hadoop

在这里插入图片描述
接着,使用如下命令进入pyspark的交互式编程环境,对数据进行初步探索和清洗:

cd /usr/local/spark #进入Spark安装目录
./bin/pyspark

(1)读取在HDFS上的文件,以csv的格式读取,得到DataFrame对象。

>>> df=spark.read.format('com.databricks.spark.csv').options(header='true', inferschema='true').load('E_Commerce_Data.csv')

(2)查看数据集的大小,输出541909,不包含标题行

df.count()

在这里插入图片描述
(3)打印数据集的schema,查看字段及其类型信息。输出内容就是上文中的属性表。

df.printSchema()

在这里插入图片描述
(4)创建临时视图data。

df.createOrReplaceTempView("data")

(5)由于顾客编号CustomID和商品描述Description均存在部分缺失,所以进行数据清洗,过滤掉有缺失值的记录。特别地,由于CustomID为integer类型,所以该字段若为空,则在读取时被解析为0,故用df[“CustomerID”]!=0 条件过滤。

clean=df.filter(df["CustomerID"]!=0).filter(df["Description"]!="")

(6)查看清洗后的数据集的大小,输出406829。

clean.count()

在这里插入图片描述
(7)数据清洗结束。根据作业要求,预处理后需要将数据写入HDFS。将清洗后的文件以csv的格式,写入E_Commerce_Data_Clean.csv中(实际上这是目录名,真正的文件在该目录下,文件名类似于part-00000),需要确保HDFS中不存在这个目录,否则写入时会报“already exists”错误。

>>> clean.write.format("com.databricks.spark.csv").options(header='true',inferschema='true').save('E_Commerce_Data_Clean.csv')

在这里插入图片描述

数据分析

首先,导入需要用到的python模块。

# -*- coding: utf-8 -*-
from pyspark import SparkContext
from pyspark.sql import SparkSession
from pyspark.sql.types import StringType, DoubleType, IntegerType, StructField, StructType
import json
import os

接着,获取spark sql的上下文。

sc = SparkContext('local', 'spark_project')
sc.setLogLevel('WARN')
spark = SparkSession.builder.getOrCreate()

最后,从HDFS中以csv的格式读取清洗后的数据目录E_Commerce_Data_Clean.csv,程序会取出该目录下的所有数据文件,得到DataFrame对象,并创建临时视图data用于后续分析。

df = spark.read.format('com.databricks.spark.csv').options(header='true', inferschema='true').load('E_Commerce_Data_Clean.csv')
df.createOrReplaceTempView("data")

为方便统计结果的可视化,将结果导出为json文件供web页面渲染。使用save方法导出数据:

def save(path, data):with open(path, 'w') as f:f.write(data)

最后利用如下指令运行分析程序:

cd /usr/local/spark
./bin/spark-submit project.py

可视化方法

from bottle import route, run, static_file
import json@route('/static/<filename>')
def server_static(filename):return static_file(filename, root="./static")@route("/<name:re:.*\.html>")
def server_page(name):return static_file(name, root=".")@route("/")
def index():return static_file("index.html", root=".")run(host="0.0.0.0", port=9999)

代码完成后,在代码所在的根目录下执行以下指令启动web服务器:

python3 web.py

在这里插入图片描述
为方便运行程序,编写run.sh脚本,内容如下。首先向spark提交project.py程序对数据进行统计分析,生成的json文件会存入当前路径的static目录下;接着运行web.py程序,即启动web服务器对分析程序生成的json文件进行解析渲染,方便用户通过浏览器查看统计结果的可视化界面。

#!/bin/bash
cd /usr/local/spark
./bin/spark-submit project.py
python3 web.py

在这里插入图片描述
在这里插入图片描述

结果可视化

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

相关文章:

【大数据基础】基于零售交易数据的Spark数据处理与分析

环境搭建 sudo apt-get install python3-pip pip3 install bottle数据预处理 首先&#xff0c;将数据集E_Commerce_Data.csv上传至hdfs上&#xff0c;命令如下&#xff1a; ./bin/hdfs dfs -put /home/hadoop/E_Commerce_Data.csv /user/hadoop接着&#xff0c;使用如下命令…...

【机器学习】P14 Tensorflow 使用指南 Dense Sequential Tensorflow 实现

Tensorflow 第一节&#xff1a;使用指南Tensorflow 安装神经网络一些基本概念隐藏层和输出层&#xff1a;神经元的输出公式Tensorflow 全连接层 Dense 与 顺序模型 SequentialDense LayerSequential Model代码实现一个神经网络实现方式一&#xff1a;手写神经网络* 实现方式二&…...

ubuntu18.04安装nvidia驱动,3种方式图文详解+卸载教程

教程目录一、关闭secure boot二、禁用nouveau驱动2.1 创建配置文件2.2 添加内容2.3 重启电脑2.4 输入命令验证三、安装显卡驱动3.1 软件和更新&#xff08;失败&#xff09;3.2 PPA源安装3.3 官网安装包安装四、卸载显卡驱动笔记本类型Ubuntu系统显卡版本联想拯救者Y7000win10U…...

多线程进阶学习11------CountDownLatch、CyclicBarrier、Semaphore详解

CountDownLatch ①. CountDownLatch主要有两个方法,当一个或多个线程调用await方法时,这些线程会阻塞 ②. 其它线程调用countDown方法会将计数器减1(调用countDown方法的线程不会阻塞) ③. 计数器的值变为0时,因await方法阻塞的线程会被唤醒,继续执行 public static void m…...

华为OD机试用java实现 -【RSA 加密算法】

最近更新的博客 华为od 2023 | 什么是华为od,od 薪资待遇,od机试题清单华为OD机试真题大全,用 Python 解华为机试题 | 机试宝典【华为OD机试】全流程解析+经验分享,题型分享,防作弊指南华为od机试,独家整理 已参加机试人员的实战技巧本篇题解:RSA 加密算法 题目 RSA 加密…...

技术宅小伙:大龄程序员就业,未来我们将何去何从?

程序员是一个高薪高压的职业&#xff0c;同时也是一个需要不断学习的职业。随着技术的不断更新换代&#xff0c;程序员需要不断地学习新的知识和技能&#xff0c;以适应市场的需求。然而&#xff0c;有些程序员可能会遭遇裁员&#xff0c;失去了稳定的收入来源。有些程序员可能…...

Spring Boot+Vue实现Socket通知推送

目录 Spring Boot端 第一步&#xff0c;引入依赖 第二步&#xff0c;创建WebSocket配置类 第三步&#xff0c;创建WebSocket服务 第四步&#xff0c;创建Controller进行发送测试 Vue端 第一步&#xff0c;创建连接工具类 第二步&#xff0c;建立连接 ​编辑 第三步&a…...

python---python介绍

python介绍 1.1介绍 1.1.1为什么学习 1.1.2什么是python 优雅简单易学1.1.3在线2进制转换 在线二进制转文本工具 - 转换 1.1.4python的安装和配置 1.需要配置对应的环境变量。可以设置多个。 默认全选 设置安装的路径 最后安装完成即可。 验证&#xff1a;python 如何退出 1.1.…...

第十四届蓝桥杯大赛——真题训练第10天

目录 第一题&#xff1a;扫雷 题目描述 输入描述 输出描述 输入输出样例 运行限制 题目代码 第 2 题&#xff1a;完全平方数 问题描述 输入格式 输出格式 样例输入 1 样例输出 1 样例输入 2 样例输出 2 题目分析 题目代码 第三题&#xff1a;求阶乘 问题描述…...

3.29~3.30学习总结

刷题情况&#xff1a; 蓝桥杯刷题&#xff1a; Java学习情况: 抽象类&#xff1a;如果将子类中抽取的共性行为&#xff08;方法&#xff09;&#xff0c;子类的执行不一样的时候 &#xff08;通俗一点来说&#xff0c;就是无法找到一个万能的方法体供子类使用&#xff0c;但这…...

结构体详解 ——— C语言

目录 1.结构体 结构体类型的声明 结构的自引用 结构体变量的定义和初始化 结构体内存对齐 结构体传参 结构体实现位段&#xff08;位段的填充&可移植性&#xff09; 位段的内存分配 1.结构体 结构体类型的声明 结构的自引用 结构体变量的定义和初始化 结构体内存对…...

Java SE 基础(4) Java的语言特点

语言特点 Java是一门面向对象编程语言&#xff0c;不仅吸收了C语言的各种优点&#xff0c;还摒弃了C里难以理解的多继承、指针等概念&#xff0c;因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表&#xff0c;极好地实现了面向对象理论&a…...

都炸店了,拼多多还在坚持什么

子超这两天听说了拼多多被“炸店”事件&#xff0c;第一反应是震惊&#xff1a;这都什么年代了&#xff0c;还有这种不择手段的暴力行为&#xff1f;所谓的炸店&#xff0c;就是一些人员被煽动和组织起来&#xff0c;有预谋地对店铺发起打砸行动&#xff0c;这和线下去打砸商铺…...

vue尚品汇商城项目-day01【6.Footer组件的显示与隐藏】

文章目录6.Footer组件的显示与隐藏6.1我们可以根据组件身上的$route获取当前路由的信息&#xff0c;通过路由路径判断Footer显示与隐藏6.2配置路由的时候&#xff0c;可以给路由添加元信息[meta]&#xff0c;路由需要配置对象&#xff0c;它的key不能乱接、瞎写、胡写&#xff…...

命令行上的数据科学第二版 一、简介

原文&#xff1a;https://datascienceatthecommandline.com/2e/chapter-1-introduction.html 贡献者&#xff1a;Ting-xin 这本书是关于如何利用命令行做数据科学的。我的目标是通过教你使用命令行的力量&#xff0c;让自己成为一名更高效和多产的数据科学家。 在标题中同时使…...

utf-8转换到utf-16的转换过程你懂吗?

人生自是有情痴&#xff0c;此恨不关风与月。——唐代元稹《离思》 从UTF-8编码的文件中读取文本并将其存储到Java的String对象中&#xff0c;涉及到从字节序列到Unicode码点&#xff0c;再到UTF-16编码的转换。以下是详细的步骤&#xff1a; 从文件读取字节序列&#xff1a;首…...

C++编程大师之路:从入门到精通--持续更新中~

文章目录前言主要内容C基础入门初识C第一个C程序注释变量常量关键字标识符命名规则数据类型整型sizeof关键字实型&#xff08;浮点型&#xff09;字符型转义字符字符串型布尔类型 bool数据的输入运算符算术运算符赋值运算符比较运算符逻辑运算符程序流程结构选择结构if语句三目…...

面试阿里软件测试岗,收到offer后我却毫不犹豫拒绝了....

我大学学的是计算机专业&#xff0c;毕业的时候&#xff0c;对于找工作比较迷茫&#xff0c;也不知道当时怎么想的&#xff0c;一头就扎进了一家外包公司&#xff0c;一干就是2年。我想说的是&#xff0c;但凡有点机会&#xff0c;千万别去外包&#xff01; 在深思熟虑过后&am…...

【c语言多线程编程】关于pthread_create()和pthread_join()的多线程详解

关于pthread_create()和pthread_join()的多线程详解 一、首先说一下pthread_create() 函数的用法&#xff1a; int pthread_create(pthread_t *thread,const pthread_attr_t *attr,void *(*start_routine) (void *),void *arg);各参数的含义&#xff1a; 1、pthread_t *thre…...

抖音seo矩阵系统源码搭建技术+二开开源代码定制部署

抖音已经成为了当今最为流行的短视频平台之一&#xff0c;拥有着庞大的用户群体和海量的视频资源。对于一些商家或者运营者来说&#xff0c;如何从这些视频资源中挖掘出有效的信息&#xff0c;进而提升自己的品牌、产品或者内容的曝光度&#xff0c;就成为了一个非常重要的问题…...

【周赛刷题】平衡树+图中最短环

2612. 最少翻转操作数&#xff08;平衡树&#xff09; 题目的难度有一部分在于数学推导。对于某个点 iii 进行反转是有一个范围的&#xff0c;这个范围需要考虑到边界的情况。可以的得到的一个结论是。对于窗口反转&#xff0c;KaTeX parse error: Expected group after ^ at p…...

C++笔记——第十篇 继承 的解析,详细易懂哦

目录 一、继承的概念及定义 1.继承的概念 2. 继承定义 2.1定义格式 2.2继承关系和访问限定符 2.3继承基类成员访问方式的变化 二、基类和派生类对象赋值转换 三、继承中的作用域 四、派生类的默认成员函数 五、继承与友元 六、继承与静态成员 七、复杂的菱形继承…...

SQL Server中的全文搜索

SQL Server中的全文搜索一、概述二、全文搜索查询三、将全文搜索查询与 LIKE 谓词进行比较四、全文搜索体系结构4.1、SQL Server 进程4.2、过滤器守护程序主机进程五、全文搜索处理5.1、全文索引过程5.2、全文查询流程六、全文索引体系结构6.1、全文索引结构6.2、全文索引片段6…...

自适应平移混音方法

一、简介&#xff1a; 自适应平移混音方法是一种常见的音频混音技术&#xff0c;它利用自适应滤波器对不同音频信号进行平移和加权&#xff0c;从而实现混音。 二、该方法的基本步骤如下&#xff1a; 采集和存储需要混音的音频信号。 对其中一个音频信号进行预处理&#xff0c…...

炼钢厂VR职业技能实训软件,提高员工学习效率和掌握技能速度

炼钢作业是一个高危、高压、高温的行业&#xff0c;在实际操作中需要严格遵守安全规范和操作规程&#xff0c;一旦出现差错可能造成巨大的经济损失和人员伤亡。 利用广州华锐互动开发的炼钢厂VR职业技能实训软件&#xff0c;可以有效帮助员工更好地理解和掌握炼钢作业中的相关…...

MySQL数据库范式

文章目录MySQL数据库范式1、范式的优缺点2、第一范式3、第二范式4、第三范式5、BC范式6、第四范式MySQL数据库范式 1、范式的优缺点 应用数据库范式的好处&#xff1a; 减少数据冗余&#xff08;这是最主要的好处&#xff0c;其他好处都是由此而附带的&#xff09;消除异常&…...

通过多层方法重塑网络安全

多年来&#xff0c;网络安全威胁的复杂性不断增加。此外&#xff0c;随着远程和混合工作场所模式的兴起&#xff0c;网络犯罪分子可以利用的漏洞数量显着增加。由于可能存在的网络威胁的范围如此之广&#xff0c;因此没有一种单一的解决方案可以应对所有威胁。 由于多种原因&a…...

Golang学习+深入(四)-运算符

目录 一、概述 1、算数运算符 2、关系运算符 3、逻辑运算符 4、赋值运算符 5、运算符优先级 6、位运算符 7、其他运算符 二、进制 1、进制转换 1、其他进制转十进制 2、十进制转其他进制 3、二进制转其他进制 4、其他进制转二进制 5、二进制在运算中的说明 三、…...

C++ 运算符重载:C++ 运算符重载的高级技巧和最佳实践

C 运算符重载&#xff1a;深入剖析与实现I. 引言A. 什么是运算符重载B. 为什么要使用运算符重载C. C运算符重载的优缺点II. 运算符重载基本概念A. 运算符重载的定义B. 运算符重载的分类1. 一元运算符2. 二元运算符C. 限制与规范1. 无法重载的运算符2. 重载运算符的规范与建议II…...

软件测试找了2个月了,找不到工作怎么办?

那就问你一些问题&#xff0c;看你能回答多少 1:测试流程是什么&#xff1f;测试用例包含哪些内容&#xff1f;测试用例设计都有哪些&#xff1f;给你一个一次性杯子&#xff0c;你会怎么测试&#xff1f; 2:数据库怎么查看前十行数据&#xff1f;内连接和外连接的区别&#…...