2.安装Spark与Python练习
一、安装Spark
《Spark2.4.0入门:Spark的安装和使用》
博客地址:http://dblab.xmu.edu.cn/blog/1307-2/
1.1 基础环境
1.1.1 安装Spark之前需要安装:
Linux系统
Java环境(Java8或JDK1.8以上版本)
Hadoop环境
Hadoop安装教程地址:http://dblab.xmu.edu.cn/blog/install-hadoop/
按照这个教程,就可以完成JDK和Hadoop这二者的安装
1.1.2 安装JDK与Hadoop平台镜像文件:
下载虚拟机镜像文件
Oracle VM VirtualBox
管理
导入虚拟电脑
已经下载到本地的镜像文件,导入,就可以生成Ubuntu虚拟机
进入Ubuntu系统时,系统登录用户名是hadoop,密码是123456
里面安装的MySQL数据库的root用户对应的密码也是hadoop
1.1.3 环境准备检查

1.2 下载安装文件
Spark安装包下载地址: http://spark.apache.org/downloads.html
登录Linux,打开Firefox,访问官网
进入下载页面后,点击主页右侧的“Download Spark”按钮进入下载页面
第1项Spark release一般默认选择最新的发行版本
第2项package type则选择“Pre-build with user-provided Hadoop [can use with most Hadoop distributions]”,可适用于多数Hadoop版本
选择好之后,再点击第3项给出的链接就可以下载Spark了
Windows --> Linux文件传输:
从windows网盘下载或复制
从Windows传到Linux
开始安装:
解压安装包spark-2.4.0-bin-without-hadoop.tgz至路径 /usr/local/ 注意,下载的路径或文件名不同,命令的相应地方不同。
更改文件名
修改文件夹权限
$ cd ~/下载
$ sudo tar -zxf ~/下载/spark-2.4.0-bin-without-hadoop.tgz -C /usr/local/ #解压
$ cd /usr/local
$ sudo mv ./spark-2.4.0-bin-without-hadoop/ ./spark # 更改文件夹名
$ sudo chown -R hadoop ./spark # 修改文件夹权限,此处的 hadoop 为系统用户名


1.3 配置相关文件
配置Spark 的classpath
$ cd /usr/local/spark
$ cp ./conf/spark-env.sh.template ./conf/spark-env.sh #拷贝配置文件

编辑该配置文件,在文件最后面加上如下一行内容:
export SPARK_DIST_CLASSPATH=$(/usr/local/hadoop/bin/hadoop classpath)

保存配置文件后,就可以启动、运行Spark了
若需要使用HDFS中的文件,则在使用Spark前需要启动Hadoop
start-dfs.sh
1.4 配置环境变量
gedit ~/.bashrc

export SPARK_HOME=/usr/local/spark
export PYTHONPATH=$SPARK_HOME/python:$SPARK_HOME/python/lib/py4j-0.10.9-src.zip:PYTHONPATH
export PYSPARK_PYTHON=python3
export PATH=$PATH:$SPARK_HOME/bin

source ~/.bashrc

查看配置结果

1.5 运行pyspark
执行如下命令启动pyspark(无参数,默认是local[*]模式):
$ cd /usr/local/spark
$ ./bin/pyspark
(启动pyspark成功后在输出信息的末尾可以看到“>>>”的命令提示符)

1 在pyspark中运行代码
可以在里面输入python代码进行测试:
>>> print('spark')
>>> 8*2+5
>>> 6*502-1
>>> sc
可以使用命令“exit()”退出pyspark:
>>> exit()

Spark任务执行流程

四个步骤
1.构建DAG(有向无环图)(调用RDD上的方法)
2.DAGScheduler将DAG切分Stage(切分的依据是Shuffle),将Stage中生成的Task以TaskSet的形式给TaskScheduler
3.TaskScheduler调度Task(根据资源情况将Task调度到相应的Executor中)
4.Executor接收Task,然后将Task丢入到线程池中执行
二、Python编程练习:英文文本的词频统计
2.1 准备文本文件(新建并编辑实验所需的英文文本)

$ gedit article.txt

2.2 实现英文文本的词频统计
2.2.1 方法一:使用python3运行py文件
(1)编写py文件

$ gedit wordcount.py

# wordcount.py
# 读文件
file = open("/usr/local/spark/article.txt","r",encoding='UTF-8').read()
# 预处理(大小写、标点符号)
file = file.lower() # 替换为小写
for str in '.?!,:;-_()[]{}"`!@#$%^&*+=*/\<|>':
file = file.replace(str, " ") # 替换标点符号为空格
# 分词
words = file.split()
# 统计每个单词出现的次数
wordcount = {}
for word in words:
wordcount[word] = wordcount.get(word,0)+1
wclist = list(wordcount.items()) # 列表统计
# 按词频大小排序--降序
wclist.sort(key=lambda x:x[1], reverse=True)
# 打印列表
print(wclist)
(2)使用python3运行wordcount.py
$ python3 wordcount.py
运行结果

2.2.2 方法二:在pyspark中用shell命令实现词频统计
(1)启动spark-shell
$ pyspark

# 导包
>>> import os
>>> import shutil
# 读文件
>>> textFile = sc.textFile("file:///usr/local/spark/article.txt")
>>> textFile.first()
注:first()是一个“行动”(Action)类型的操作,会启动真正的计算过程,从文件中加载数据到变量textFile中,并取出第一行文本,另因为Spark采用了惰性机制,在执行转换操作的时候,即使我们输入了错误的语句,pyspark也不会马上报错,而是等到执行“行动”类型的语句时启动真正的计算,那个时候“转换”操作语句中的错误就会显示出来:拒绝连接!

# 分词(指令将文档类的内容“拍扁”成一个个单词,然后按照“ ”(空格)的样式切割)
>>> word = textFile.flatMap(lambda line:line.split(" "))
# 统计每个单词出现的次数————转换成键值对并计数,将文档中的内容按照(key,value)的方式封装,其中value为1;指令将封装好的map中的同一个key下面的value值进行相加
>>> count = word.map(lambda word:(word,1)).reduceByKey(lambda a, b:a + b)
# 将封装好的map按照key的大小进行降序(sortBy()默认为升序,参数传入False则为降序)
>>> count = count.sortBy(lambda x:x[1],False)
# 查询一下生成的Rdd内容的样式
>>> count.collect()

# 删除输出目录(非必需)
>>> if os.path.exists("file:///usr/local/spark/output_wordcount"):
... shutil.rmtree("file:///usr/local/spark/output_wordcount", True)
# 将统计结果写入结果文件
>>> count.saveAsTextFile("file:///usr/local/spark/output_wordcount")
查看结果

注:方法一和方法二结果稍有不同,原因是方法二没有进行预处理。
三、根据自己的编程习惯搭建编程环境
此处使用PyCharm作为Python编程环境
Ubuntu 16.04 + PyCharm + spark 运行环境配置
1. 检查JAVA配置环境
可以用命令java -version或者javac -version来看你的环境有没有配置完成

出现版本号说明JDK环境配置成功
2. 官网下载地址:http://www.jetbrains.com/pycharm/ ,选择平台为Linux
PyCharm分为社区版和专业版,专业版功能更加齐全但需收费,这里我们下载社区版

3. 在终端中用cd命令跳转到你的下载目录,复制你下载的PyCharm压缩包的名字,然后执行如下命令解压缩
$ sudo tar -zxvf ~/下载/pycharm-community-2021.3.2.tar.gz -C /usr/local/ # 解压
$ sudo mv /usr/local/pycharm-community-2021.3.2 /usr/local/PyCharm # 改名
$ sudo chown -R hadoop /usr/local/PyCharm # 授权
$ /usr/local/PyCharm/bin/pycharm.sh # 启动




4. PyCharm启动界面


5. 新建一个项目测试运行环境


配置完成!
2.安装Spark与Python练习的更多相关文章
- Windows下单机安装Spark开发环境
机器:windows 10 64位. 因Spark支持java.python等语言,所以尝试安装了两种语言环境下的spark开发环境. 1.Java下Spark开发环境搭建 1.1.jdk安装 安装o ...
- ubuntu18.04安装spark(伪分布式)
在安装spark之前,首先需要安装配置Hadoop,这个就不做详细介绍了,可以参看博主的另一篇: https://blog.csdn.net/weixin_42001089/article/detai ...
- Spark 的 python 编程环境
Spark 可以独立安装使用,也可以和 Hadoop 一起安装使用.在安装 Spark 之前,首先确保你的电脑上已经安装了 Java 8 或者更高的版本. Spark 安装 访问Spark 下载页面, ...
- 安装spark ha集群
安装spark ha集群 1.默认安装好hadoop+zookeeper 2.安装scala 1.解压安装包 tar zxvf scala-2.11.7.tgz 2.配置环境变量 vim /etc/p ...
- Ubuntu 14.04 LTS 安装 spark 1.6.0 (伪分布式)-26号开始
需要下载的软件: 1.hadoop-2.6.4.tar.gz 下载网址:http://hadoop.apache.org/releases.html 2.scala-2.11.7.tgz 下载网址:h ...
- window下安装pip工具,再利用pip安装工具来安装其他的python包
1.在安装pip前,请确认你window系统中已经安装好了python,和easy_install工具,如果系统安装成功,easy_install在目录C:\Python27\Scripts 下面,如 ...
- Python 基础之在ubuntu系统下安装双版本python
前言:随着python升级更新,新版本较于老版本功能点也有不同地方,作为一个初学者应该了解旧版本的规则,也要继续学习新版本的知识.为了能更好去学习python,我在ubuntu安装python2和py ...
- 在Ubuntu上安装Mysql For Python
安装: 首先安装pip,并且把pip更新到最小版本 apt-get install python-pip pip install -U pip 安装mysql开发包 apt-get install p ...
- ubuntu安装spark on yarn
安装spark 安装hadoop 安装ssh,调试免密钥登录 配置hadoop 配置yarn 测试
随机推荐
- 【C# IO 操作】 文件系统侦听 FileSystemWatcher
侦听器 :FileSystemWatcher FileSystemWatcher常用属性有: Filter :获取或设置用于确定目录中要监视哪些文件的过滤器字符串.Filter 属性设置为空字符串 ( ...
- C#中 Var关键字
文章来源: 青水白凡 C#中 Var关键字 Var是C#3.5新增的一个关键字,用来代替某些具体的类型,由编译器自动判断变量类型,编译器可以根据变量的初始化值"推断"变量的类型. ...
- SpreadJS + GcExcel 一出,谁与争锋!全栈表格技术轻松应对复杂公式计算场景(一)
设计思路篇 Excel是我们日常办公中最常用的电子表格程序,不仅可满足报表数据的计算需求,还可提供绘图.数据透视分析.BI和Visual Basic for Applications (VBA)宏语言 ...
- 第一次尝试3D建模和打印:色子
打印机前几天到了,除了打印了一半自带demo之外,还没开始打过啥模型.想自己从头打印个东西.那就做个色子吧. 因为机子上有SW2020,参考这个 solidworks2017怎么建模骰子? 教程来练习 ...
- Python之ini配置文件详解
INI介绍 INI是英文"初始化"(initialization)的缩写,被用来对操作系统或特定程序初始化或进行参数设置.由节(section). 键(key).值(value)构 ...
- Pandas:plot相关函数
0.注意事项 及 各种错误 1)绘制bar图时,如果出现重复的x值被合并到一个情况(导致X轴应该显示内容有缺失),可能是由于Pandas版本太低: 2)无法设置中文title,在代码中加入两句话: p ...
- WIN10:IE浏览器的默认主页以及通过链接搜索的默认引擎
主页设置: 地址栏搜索引擎:
- 2020.10.6 ThreadLocal
在多线程环境下,每个线程都有自己的数据.一个线程使用自己的局部变量比使用全局变量要好,因为局部变量不会被其他线程改变. 但是局部变量也存在问题--在函数调用的时候,传递起来很麻烦: def proce ...
- JZ-043-左旋转字符串
左旋转字符串 题目描述 汇编语言中有一种移位指令叫做循环左移(ROL),现在有个简单的任务,就是用字符串模拟这个指令的运算结果.对于一个给定的字符序列S, 请你把其循环左移K位后的序列输出.例如,字符 ...
- 从零开始Pytorch-YOLOv3【笔记】(一)配置文件解读
前言 这是github上的一个项目YOLO_v3_tutorial_from_scratch,它还有相应的blog对其详细的解读.机器之心翻译了他的tutorial:从零开始PyTorch项目:YOL ...