基于Spark SQL的数据探索

本文详细介绍了如何使用Spark SQL进行探索性数据分析,包括启动HDFS、Spark和Zeppelin服务器,准备数据,进行数据统计分析,数据可视化,数据抽样和创建数据透视表等步骤,旨在掌握Spark SQL在大数据分析中的应用。
摘要由CSDN通过智能技术生成

⚠申明: 未经许可,禁止以任何形式转载,若要引用,请标注链接地址。 全文共计9695字,阅读大概需要10分钟
🌈更多学习内容, 欢迎👏关注👀【文末】我的个人微信公众号:不懂开发的程序猿
⏰个人网站:https://jerry-jy.co/

❗❗❗知识付费,🈲止白嫖,有需要请后台私信或【文末】个人微信公众号联系我

一、实验目的

掌握Spark SQL的探索性数据分析技术。

二、实验内容

1、进行探索性数据分析。
  2、探索性数据可视化。
  3、对数据进行采样。
  4、创建数据透视表。

三、实验原理

Exploratory Data Analysis (EDA),或Initial Data Analysis (IDA),是一种数据分析方法,试图最大限度地洞察数据。这包括评估数据的质量和结构,计算汇总或描述性统计,以及绘制适当的图表。它可以揭示底层结构,并建议如何建模数据。此外,EDA帮助我们检测数据中的异常值、错误和异常,并且决定如何处理这些数据通常比其他更复杂的分析更重要。EDA使我们能够测试我们的基本假设,发现数据中的集群和其他模式,并识别各种变量之间可能的关系。仔细的EDA过程对于理解数据是至关重要的,而且有时足以揭示如此糟糕的以至于使用更复杂的基于模型的分析是不合理的数据质量。
  在Spark SQL中,DataFrame上定义有一个summary()函数。这个函数将返回DataFrame中一列数值的记录的数量(count)、均值(mean)、标准差(stdev)、最小值(min)、最大值(max)。

四、实验环境

硬件:x86_64 ubuntu 16.04服务器
  软件:JDK 1.8,Spark-2.3.2,Hadoop-2.7.3,zeppelin-0.8.1

五、实验步骤

5.1 启动HDFS集群、Spark集群和Zeppelin服务器

在终端窗口下,输入以下命令,分别启动HDFS集群、Spark集群和Zeppelin服务器:

1.	$ start-dfs.sh
2.	$ cd /opt/spark
3.	$ ./sbin/start-all.sh
4.	$ zeppelin-daemon.sh start

然后使用jps命令查看进程,确保已经正确地启动了HDFS集群、Spark集群和Zeppelin服务器。

5.2 准备实验数据

将本地数据上传至HDFS上。在终端窗口中,分别执行以下命令上传数据:

1.	$ hdfs dfs -mkdir -p /data/dataset/
2.	$ hdfs dfs -put /data/dataset/batch/chuangxin.csv /data/dataset/
3.	$ hdfs dfs -put /data/dataset/bank-full.csv /data/dataset/

执行以下命令,查看数据文件是否已经上传到HDFS中:

1.	$ hdfs dfs -ls /data/dataset/

5.3 进行探索性数据分析

在探索性数据分析中,我们研究给定的数据。研究数据意味着统计记录的数量,然后寻找有意义的模式。
  1、创建notebook。启动浏览器,访问”http://localhost:9090“, 打开zeppelin notebook首页。点击”Create new note”链接,创建一个新的笔记本,命名为”analy_demo”,如下图所示:
在这里插入图片描述

2、 加载数据。在zeppelin中输入如下代码:

1.	// 加载数据到DataFrame
2.	val filePath = "hdfs://localhost:9000/data/dataset/chuangxin.csv"
3.	val df1 = spark.read.option("header","true").option("inferSchema","true").csv(filePath)
4.	     
5.	// 查看schema
6.	df1.printSchema
7.	     
8.	// 查看前5条数据
9.	df1.show(5)

同时按下”【Shift + Enter】”键,执行以上代码。可以看到如下的输出内容:
在这里插入图片描述
在这里插入图片描述

3、 统计总共有多少条记录。在zeppelin中执行如下代码:

1.	// 统计总共有多少条记录
2.	df1.count

同时按下”【Shift + Enter】”键,执行以上代码。可以看到如下的输出内容:
  在这里插入图片描述

可以看出,这个数据集中总共有1525条记录。
  4、 识别缺失值。在zeppelin中执行如下代码:

1.	// 识别缺失值:分析样本数据集中缺少数据字段的记录数量
2.	df1.groupBy("SQJE").count().show
3.	df1.groupBy("FFJE").count().show

同时按下”【Shift + Enter】”键,执行以上代码。可以看到如下的输出内容:
在这里插入图片描述
在这里插入图片描述

在这里,我们分别对”SQJE”(申请金额)列和”FFJE”(发放金额)列进行判断,看这两列是否有缺失值。从结果可以看出,”SQJE”列没有缺失值,而”FFJE”列有一个缺失值。
  5、 找出有缺失值的记录。在zeppelin中执行如下代码:

1.	df1.where($"FFJE".isNull).show
2.	// df1.filter
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不懂开发的程序猿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值