大数据实验 实验六:Spark初级编程实践

本文介绍了在Windows环境下通过OracleVMVirtualBox虚拟机安装Hadoop3.3和Spark3.4.0,实践了Spark的基本操作,包括读取文件、数据去重和求平均值,同时记录了遇到的问题及解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Spark初级编程实践

实验环境:Windows 10 Oracle VM VirtualBox
虚拟机:cnetos 7
Hadoop 3.3

实验内容与完成情况:

1. 安装hadoop和spark

因为Hadoop版本为3.3所以在官网选择支持3.3的spark安装包
在这里插入图片描述
解压安装包到指定文件夹

在这里插入图片描述
配置spark-env.sh
在这里插入图片描述
启动成功
在这里插入图片描述
在这里插入图片描述

2. Spark读取文件系统的数据

(1) 在spark-shell中读取Linux系统本地文件“/home/hadoop/test.txt”,然后统计出文件的行数;

在这里插入图片描述

(2) 在spark-shell中读取HDFS系统文件“/user/hadoop/test.txt”(如果该文件不存在,请先创建),然后,统计出文件的行数;

在这里插入图片描述

(3) 编写独立应用程序(推荐使用Scala语言),读取HDFS系统文件“/user/hadoop/test.txt”(如果该文件不存在,请先创建),然后,统计出文件的行数;通过sbt工具将整个应用程序编译打包成 JAR包,并将生成的JAR包通过 spark-submit 提交到 Spark 中运行命令。

编写程序
在这里插入图片描述

安装sbt

在这里插入图片描述
程序编译

在这里插入图片描述

使用命令/software/spark-3.4.0-bin-hadoop3/bin/spark-submit --class “hdfstest” /software/hdfstest/target/scala-2.12/a-simple-hdfs-test_2.12-1.0.jar >& 1 |grep The 运行jar包
在这里插入图片描述
运行成功

3. 编写独立应用程序实现数据去重

对于两个输入文件 A 和 B,编写 Spark 独立应用程序(推荐使用 Scala 语言),对两个文件进行合并,并剔除其中重复的内容,得到一个新文件 C。下面是输入文件和输出文件的一个样例,供参考。

输入文件 A 的样例如下:
20170101 x
20170102 y
20170103 x
20170104 y
20170105 z
20170106 z
输入文件 B 的样例如下:
20170101 y
20170102 y
20170103 x
20170104 z
20170105 y
根据输入的文件 A 和 B 合并得到的输出文件 C 的样例如下:
20170101 x
20170101 y
20170102 y
20170103 x
20170104 y
20170104 z
20170105 y
20170105 z
20170106 z

编写文件A B
在这里插入图片描述
配置编译选项
在这里插入图片描述
编译代码
在这里插入图片描述
使用/software/spark-3.4.0-bin-hadoop3/bin/spark-submit --class “RemDup” /software/RemDup/target/scala-2.12/remove-duplication_2.12-1.0.jar 命令运行jar包

运行

在这里插入图片描述
查看运行结果

在这里插入图片描述

4. 编写独立应用程序实现求平均值问题

每个输入文件表示班级学生某个学科的成绩,每行内容由两个字段组成,第一个是学生名字,第二个是学生的成绩;编写 Spark 独立应用程序求出所有学生的平均成绩,并输出到一个新文件中。下面是输入文件和输出文件的一个样例,供参考。

Algorithm 成绩:
小明 92
小红 87
小新 82
小丽 90
Database 成绩:
小明 95
小红 81
小新 89
小丽 85
Python 成绩:
小明 82
小红 83
小新 94
小丽 91
平均成绩如下:
(小红,83.67)
(小新,88.33)
(小明,89.67)
(小丽,88.67)

编译被操作文件 Algorithm database python

在这里插入图片描述
编写代码文件
在这里插入图片描述

编写配置文件

在这里插入图片描述
程序打包
在这里插入图片描述
使用命令/software/spark-3.4.0-bin-hadoop3/bin/spark-submit --class “AvgScore” /software/AvgScore/target/scala-2.12/average-score_2.12-1.0.jar运行程序

在这里插入图片描述
查看结果在这里插入图片描述

出现的问题

问题一

运行start-all命令时spark报错
说缺少依赖

问题二

在etc/profile中更改完环境后
Source命令刷新文件仍然出现路径配置错误
在这里插入图片描述

问题三

在用sbt编译的过程中报错

在这里插入图片描述

解决方案

问题一

在下载安装包时版本选择错误

在这里插入图片描述
将安装包换为
在这里插入图片描述

问题二

因为之前开启了两个窗口进行命令操作
在这里插入图片描述
在一个窗口刷新在另一个窗口使用start-all命令
于是在同一个窗口source一下

在这里插入图片描述成功启动,问题解决

问题三

在这里插入图片描述

在这里插入图片描述
将编译的sbt文件配置改为启动spark-shell中现实的scala的版本号,不能使用,在etc/profile注册路径中的版本

完成编译
在这里插入图片描述
问题解决

### 关于Ubuntu上使用Spark MLlib进行初级编程实践 对于希望在Ubuntu平台上利用Apache Spark的MLlib库开展机器学习项目的新手而言,了解如何设置环境以及执行基本操作至关重要。下面提供了一个概述性的指南来帮助启动这一过程。 #### 设置开发环境 为了能够在Ubuntu操作系统之上运行基于Spark的应用程序并调用其内置的MLlib功能,首先需要确保已经正确安装了Java Development Kit(JDK),因为这是Spark所依赖的基础组件之一[^1]。接着可以下载适合Linux系统的预编译版本的Spark包,并将其解压到指定目录下;另外还需要配置好`$SPARK_HOME`环境变量以便后续能够顺利加载该框架的相关资源文件。 #### 初步探索数据集与模型训练 一旦完成了上述准备工作之后,则可以通过编写简单的Scala/Python脚本来读取本地磁盘中的CSV格式的数据源作为输入给定至DataFrame结构内用于进一步处理分析工作。例如,在这里给出一段采用PySpark API实现线性回归预测任务的小例子: ```python from pyspark.sql import SparkSession from pyspark.ml.regression import LinearRegression # 创建spark session实例对象 spark = SparkSession.builder.appName("SimpleApp").getOrCreate() # 加载样本数据集 data = spark.read.format("libsvm").load("/path/to/sample_libsvm_data.txt") # 将原始数据划分为训练集和测试集合两部分 train_data, test_data = data.randomSplit([0.7, 0.3]) lr = LinearRegression(maxIter=10) # 训练模型 model = lr.fit(train_data) # 使用测试集评估性能指标得分情况 test_result = model.evaluate(test_data) print(f"Root Mean Squared Error (RMSE) on test data = {test_result.rootMeanSquaredError}") ``` 此段代码片段展示了怎样快速构建起一个基础版别的监督式学习流程——即先定义好目标函数形式(此处选择了最小化残差平方和),再通过迭代优化求得最优参数估计值从而完成整个建模环节的任务描述[^2]。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值