第二周总结

本周我学习了如何安装Spark ,以下是安装过程:

一、安装 Spark3.4.0

首先需要下载Spark安装文件。访问Spark官方下载地址
下载spark-3.4.0-bin-hadoop.tgz文件。也可以直接点击这里从百度云盘下载软件(提取码:ziyu)。进入百度网盘后,进入“软件”目录,找到spark-3.4.0-bin-hadoop.tgz文件,下载到本地。注意:一定要下载带hadoop的版本,without hadoop会报错。
本教程的具体运行环境如下:

  • Hadoop 3.3.5
  • Java JDK 1.8
  • Spark 3.4.0

需要注意的是,本教程内容中Spark采用Local模式进行安装,也就是在单机上运行Spark,因此,在安装Hadoop时,需要按照伪分布式模式进行安装。在单台机器上按照“Hadoop(伪分布式)+Spark(Local模式)”这种方式进行Hadoop和Spark组合环境的搭建,可以较好满足入门级Spark学习的需求

安装Hadoop(伪分布式)

Spark的安装过程较为简单,在已安装好 Hadoop 的前提下,经过简单配置即可使用。
如果仍没有安装Hadoop3.3.5(伪分布式),请访问Hadoop3.3.5安装教程_单机/伪分布式配置_Hadoop3.3.5/Ubuntu22.04(20.04/18.04/16.04),依照教程学习安装即可。

安装JAVA JDK

安装Hadoop3.3.5的过程就已经要求安装JAVA JDK1.8了。如果没有,请参考Hadoop3.3.5安装教程_单机/伪分布式配置_Hadoop3.3.5/Ubuntu22.04(20.04/18.04/16.04)进行安装配置。

安装Spark(Local模式)

  1. sudo tar -zxf ~/下载/spark-3.4.0-bin-without-hadoop.tgz -C /usr/local/
  2. cd /usr/local
  3. sudo mv ./spark-3.4.0-bin-without-hadoop/ ./spark
  4. sudo chown -R hadoop:hadoop ./spark # 此处的 hadoop 为你的用户名
language-bash

安装后,还需要修改Spark的配置文件spark-env.sh

  1. cd /usr/local/spark
  2. cp ./conf/spark-env.sh.template ./conf/spark-env.sh
language-bash

编辑spark-env.sh文件(vim ./conf/spark-env.sh),在第一行添加以下配置信息:

export SPARK_DIST_CLASSPATH=$(/usr/local/hadoop/bin/hadoop classpath)

配置完成后就可以直接使用,不需要像Hadoop运行启动命令。
通过运行Spark自带的示例,验证Spark是否安装成功。

  1. cd /usr/local/spark
  2. bin/run-example SparkPi
language-bash

执行时会输出非常多的运行信息,输出结果不容易找到,可以通过 grep 命令进行过滤(命令中的 2>&1 可以将所有的信息都输出到 stdout 中,否则由于输出日志的性质,还是会输出到屏幕中):

  1. cd /usr/local/spark
  2. bin/run-example SparkPi 2>&1 | grep "Pi is"
language-bash

这里涉及到Linux Shell中管道的知识,详情可以参考Linux Shell中的管道命令
过滤后的运行结果如下图示,可以得到π 的 5 位小数近似值:

二、使用 Spark Shell 编写代码

学习Spark程序开发,建议首先通过spark-shell交互式学习,加深Spark程序开发的理解。
Spark shell 提供了简单的方式来学习 API,也提供了交互的方式来分析数据。

启动Spark Shell

  1. cd /usr/local/spark
  2. bin/spark-shell
language-bash

启动spark-shell后,会自动创建名为sc的SparkContext对象和名为spark的SparkSession对象,如图:

加载文本文件

spark创建sc,可以加载本地文件和HDFS文件创建RDD。这里用Spark自带的本地文件README.md文件测试。

  1. val textFile = sc.textFile("file:///usr/local/spark/README.md")
language-scala

加载HDFS文件和本地文件都是使用textFile,区别是添加前缀(hdfs://和file:///)进行标识。

简单RDD操作

  1. //获取RDD文件textFile的第一行内容
  2. textFile.first()
  3. //获取RDD文件textFile所有项的计数
  4. textFile.count()
  5. //抽取含有“Spark”的行,返回一个新的RDD
  6. val lineWithSpark = textFile.filter(line => line.contains("Spark"))
  7. //统计新的RDD的行数
  8. lineWithSpark.count()
language-scala

可以通过组合RDD操作进行组合,可以实现简易MapReduce操作

  1. //找出文本中每行的最多单词数
  2. textFile.map(line => line.split(" ").size).reduce((a, b) => if (a > b) a else b)
language-scala

更多RDD的操作,请访问Spark官方文档RDD操作

退出Spark Shell

输入exit,即可退出spark shell

  1. :quit
 

 

posted @   Joranger  阅读(14)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 使用C#创建一个MCP客户端
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示