spark-本地模式的配置和简单使用
python环境的安装
在虚拟机中,只能安装一个python的版本,若想要安装别的版本,则需要卸载之前的版本——解决方式,安装Anaconda
通过百度网盘分享的文件:Anaconda3-2021.05-Linux-x86_64.sh
链接:https://pan.baidu.com/s/1e3rvqD0G7eSEP_7di8uzxQ?pwd=do8s
提取码:do8s
1、上传Anaconda3-2021.05-Linux-x86_64.sh 到/opt/installs下
2、执行文件:
sh Anaconda3-2021.05-Linux-x86_64.sh
3、开始安装
# 过程
#第一次:【直接回车,然后按q】
Please, press ENTER to continue
>>>
#第二次:【输入yes】
Do you accept the license terms? [yes|no]
[no] >>> yes
#第三次:【输入解压路径:/opt/installs/anaconda3】
[/root/anaconda3] >>> /opt/installs/anaconda3
#第四次:【输入yes,是否在用户的.bashrc文件中初始化
Anaconda3的相关内容】
Do you wish the installer to initialize Anaconda3
by running conda init? [yes|no]
[no] >>> yes
4、刷新环境变量
source /root/.bashrc
5、激活虚拟环境,如果需要关闭就使用:conda deactivate
# 默认会进入 base中 或者在后面加参数
conda activate
# 配置成功 会出现
(base) [root@bigdata01 modules]#
6、此时Anaconda已经下载完成 而在Anaconda中自带了一个python3——3.8.8
#可以看一下
cd /opt/installs/anaconda3/bin/python3
# 而linux中自带的python是2.7.5
7、创建软连接
ln -s /opt/installs/anaconda3/bin/python3 /usr/bin/python3
Anaconda 的命令
conda list:列举所有的包
conda install 包名:安装库包
conda remove 包名:移除库包
base:Anaconda自带的基础环境
# 切换
conda activate base
# 关闭
conda deactivate
spark本地模式的配置
通过百度网盘分享的文件:spark-3.1.2-bin-hadoop3.2.tgz
链接:https://pan.baidu.com/s/1J2-d_qEubjcAXq_8LYi_hA?pwd=sgtm
提取码:sgtm
由于需要进行本地模式 集群-standalone 集群-yarn 三种模式的配置,所以后续是需要将该解压包解压三次的,通过创建软连接连接到不同的模式,若要修改只需要删除软连接,重新创建即可。
1、上传(上传到/opt/modules 下),解压(解压到/opt/installs 下),重命名
tar -zxvf /opt/install/spark-3.1.2-bin-hadoop3.2.tgz -C /opt/modules
mv spark-3.1.2-bin-hadoop3.2/ spark-local
2、创建一个软连接
ln -s spark-local spark
3、配置环境变量 vi /etc/profile
export SPARK_HOME=/opt/installs/spark
export PATH=$PATH:$SPARK_HOME/bin
4、刷新环境变量
source /etc/profile
本地模式的简单使用
运行自带或上传的py文件
spark-submit --master local[2] /opt/installs/spark/examples/src/main/python/pi.py 100
黑窗口的使用
/opt/installs/spark/bin/pyspark --master local[2]
此时会进入一个黑窗口
# 需求:将一个包含 1~ 10 共10个元素的列表,使用Spark实现分布式处理,将每个元素的平方输出
# 1、定义一个列表
list1 = [1,2,3,4,5,6,7,8,9,10]
# 2、将列表通过SparkContext将数据转换为一个分布式集合RDD——将一个list变为Rdd对象
inputRdd = sc.parallelize(list1)
# 获取行数 10行
inputRdd.count()
# 获取前n行的内容 ,放到一个list中,每行占一个
fileRdd.take(3)
# 调用Rdd中的map方法 返回还是一个Rdd
rsRdd = inputRdd.map(lambda x : x**2)
# 将结果RDD的每个元素进行输出
rsRdd.foreach(lambda x : print(x))