Spark环境搭建和使用方法

news2024/11/16 8:51:09

目录

一、安装Spark

(一)基础环境

(二)安装Python3版本

(三)下载安装Spark

(四)配置相关文件

二、在pyspark中运行代码

(一)pyspark命令

(二)启动pyspark 

三、开发Spark独立应用程序

(一)编写程序

(二)通过spark-submit运行程序 


一、安装Spark

(一)基础环境

安装Spark之前需要安装Linux系统、Java环境(Java8或JDK1.8以上版本)和Hadoop环境。

可参考本专栏前面的博客:
大数据软件基础(3) —— 在VMware上安装Linux集群-CSDN博客
大数据存储技术(1)—— Hadoop简介及安装配置-CSDN博客

(二)安装Python3版本

1、查看当前环境下的Python版本

[root@bigdata zhc]# python --version

 Python 2.7.5 版本已经不能满足当前编程环境需求,所以要安装较高版本的Python3,但Python 2.7.5 版本不能卸载。

2、连网下载Python3

[root@bigdata zhc]# yum install -y python3

 如图所示,Python3安装完成。

 安装的版本为Python 3.6.8。

(三)下载安装Spark

1、Spark安装包下载地址:https://spark.apache.org/

进入下载页面后,点击主页的“Download”按钮进入下载页面,下载页面中提供了几个下载选项,主要是Spark release及Package type的选择,如下图所示。

我这里下的是Spark 2.4.0版本,没有此版本的,也可以下载Spark 3.2.4或更高版本的。

2、解压安装包spark-2.4.0-bin-without-hadoop.tgz至路径 /usr/local

[root@bigdata uploads]# tar -zxvf spark-2.4.0-bin-without-hadoop.tgz -C /usr/local

更改文件目录名:

[root@bigdata local]# mv spark-2.4.0-bin-without-hadoop/ spark 

(四)配置相关文件

1、配置Spark的classpath

先切换到 /usr/local/spark/conf 目录下,复制spark-env.sh.template重命名为spark-env.sh。

[root@bigdata local]# cd /usr/local/spark/conf
[root@bigdata conf]# cp spark-env.sh.template spark-env.sh
[root@bigdata conf]# ll
总用量 44
-rw-r--r-- 1 zhc  zhc   996 10月 29 2018 docker.properties.template
-rw-r--r-- 1 zhc  zhc  1105 10月 29 2018 fairscheduler.xml.template
-rw-r--r-- 1 zhc  zhc  2025 10月 29 2018 log4j.properties.template
-rw-r--r-- 1 zhc  zhc  7801 10月 29 2018 metrics.properties.template
-rw-r--r-- 1 zhc  zhc   865 10月 29 2018 slaves.template
-rw-r--r-- 1 zhc  zhc  1292 10月 29 2018 spark-defaults.conf.template
-rwxr-xr-x 1 root root 4221 12月 13 20:23 spark-env.sh
-rwxr-xr-x 1 zhc  zhc  4221 10月 29 2018 spark-env.sh.template
[root@bigdata conf]# vi spark-env.sh

将如下内容加到spark-env.sh文件的第一行。

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

实现了Spark和Hadoop的交互。

2、配置 /etc/profile 文件

将如下内容添加到 /etc/profile 文件最后,并使其生效。

[root@bigdata conf]# vi /etc/profile
[root@bigdata conf]# source /etc/profile
export SPARK_HOME=/usr/local/spark
export PYTHONPATH=$SPARK_HOME/python:$SPARK_HOME/python/lib/py4j-0.10.7-src.zip:$PYTHONPATH
export PYSPARK_PYTHON=python3
export PATH=$HADOOP_HOME/bin:$SPARK_HOME/bin:$PATH

如下图所示。 

至此,Spark环境就安装配置好了。

输入实例SparkPi验证Spark环境。为了从大量的输出信息中快速找到我们想要的自行结果,可以使用grep命令进行过滤。命令如下:

[root@bigdata spark]# run-example SparkPi 2>&1 |grep "Pi is"

 

二、在pyspark中运行代码

(一)pyspark命令

pyspark命令及其常用的参数如下:

pyspark --master <master-url>

Spark的运行模式取决于传递给SparkContext的Master URL的值。Master URL可以是以下任一种形式:

        (1)local 使用一个Worker线程本地化运行SPARK(完全不并行)
        (2)local[*] 使用逻辑CPU个数数量的线程来本地化运行Spark
        (3)local[K] 使用K个Worker线程本地化运行Spark(理想情况下,K应该根据运行机器的CPU核数设定)
        (4)spark://HOST:PORT 连接到指定的Spark standalone master。默认端口是7077
        (5)yarn-client 以客户端模式连接YARN集群。集群的位置可以在HADOOP_CONF_DIR环境变量中找到
        (6)yarn-cluster 以集群模式连接YARN集群。集群的位置可以在HADOOP_CONF_DIR环境变量中找到
        (7)mesos://HOST:PORT 连接到指定的Mesos集群。默认接口是5050

在Spark中采用本地模式启动pyspark的命令主要包含以下参数:
--master:这个参数表示当前的pyspark要连接到哪个master,如果是local[*],就是使用本地模式启动pyspark,其中,中括号内的星号表示需要使用几个CPU核心(core),也就是启动几个线程模拟Spark集群
--jars: 这个参数用于把相关的JAR包添加到CLASSPATH中;如果有多个jar包,可以使用逗号分隔符连接它们。

比如,要采用本地模式,在4个CPU核心上运行pyspark:

$ cd /usr/local/spark
$ ./bin/pyspark --master local[4]

或者,可以在CLASSPATH中添加code.jar,命令如下:

$ cd /usr/local/spark
$ ./bin/pyspark --master local[4] --jars code.jar 

 可以执行“pyspark --help”命令,获取完整的选项列表,具体如下:

$ cd /usr/local/spark
$ ./bin/pyspark --help

(二)启动pyspark 

执行如下命令启动pyspark(默认是local模式):

[root@bigdata zhc]# cd /usr/local/spark
[root@bigdata spark]# pyspark

可以在里面输入scala代码进行调试:

>>> 8*2+5
21

 可以使用命令“exit()”退出pyspark:

>>> exit()

三、开发Spark独立应用程序

(一)编写程序

# /home/zhc/mycode/WordCount.py
from pyspark import SparkConf, SparkContext
conf = SparkConf().setMaster("local").setAppName("My App")
sc = SparkContext(conf = conf)
logFile = "file:///usr/local/spark/README.md"
logData = sc.textFile(logFile, 2).cache()
numAs = logData.filter(lambda line: 'a' in line).count()
numBs = logData.filter(lambda line: 'b' in line).count()
print('Lines with a: %s, Lines with b: %s' % (numAs, numBs))

对于这段Python代码,可以直接使用如下命令执行:

[root@bigdata zhc]# cd /home/zhc/mycode
[root@bigdata mycode]# vi WordCount.py
[root@bigdata mycode]# ll
总用量 8
-rw-r--r-- 1 root root 430 12月 14 12:54 WordCount.py
-rw-r--r-- 1 root root  56 12月  9 18:55 word.txt
[root@bigdata mycode]# python3 WordCount.py

执行该命令以后,可以得到如下结果:

(二)通过spark-submit运行程序 

可以通过spark-submit提交应用程序,该命令的格式如下:

spark-submit  

        --master <master-url>  

        --deploy-mode <deploy-mode>   #部署模式  

        ... #其他参数  

        <application-file>  #Python代码文件  

        [application-arguments]  #传递给主类的主方法的参数

可以执行“spark-submit  --help”命令,获取完整的选项列表,具体如下:

$ cd /usr/local/spark
$ ./bin/spark-submit --help

以通过 spark-submit 提交到 Spark 中运行,命令如下:
注意要在 /home/zhc/mycode/ 路径下执行spark-submit,否则要使用绝对路径。

[root@bigdata mycode]# spark-submit WordCount.py
[root@bigdata zhc]# spark-submit /home/zhc/mycode/WordCount.py    #绝对路径

运行结果如图所示: 

此时我们发现有大量的INFO信息,这些信息属于干扰信息,对于我们有用的只有“Lines with a: 62, Lines with b: 30”这一行。为了避免其他多余信息对运行结果的干扰,可以修改log4j的日志信息显示级别,具体方法如下:

[root@bigdata spark]# cd /usr/local/spark/conf
[root@bigdata conf]# ll
总用量 44
-rw-r--r-- 1 zhc  zhc   996 10月 29 2018 docker.properties.template
-rw-r--r-- 1 zhc  zhc  1105 10月 29 2018 fairscheduler.xml.template
-rw-r--r-- 1 zhc  zhc  2025 10月 29 2018 log4j.properties.template
-rw-r--r-- 1 zhc  zhc  7801 10月 29 2018 metrics.properties.template
-rw-r--r-- 1 zhc  zhc   865 10月 29 2018 slaves.template
-rw-r--r-- 1 zhc  zhc  1292 10月 29 2018 spark-defaults.conf.template
-rwxr-xr-x 1 root root 4300 12月 13 20:33 spark-env.sh
-rwxr-xr-x 1 zhc  zhc  4221 10月 29 2018 spark-env.sh.template
[root@bigdata conf]# cp log4j.properties.template log4j.properties
[root@bigdata conf]# vi log4j.properties

打开 log4j.properties 文件后,可以发现包含如下一行信息:

log4j.rootCategory=INFO, console

将其修改为: 

log4j.rootCategory=ERROR, console

再次回到 /home/zhc/mycode/ 路径下执行spark-submit,就会发现没有INFO信息了。

[root@bigdata mycode]# spark-submit WordCount.py

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1309955.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

HTTP 403错误:禁止访问,如何解除

“HTTP 403错误&#xff0c;禁止访问&#xff01;”这句话是不是听起来就像是在告诉你&#xff1a;“嘿&#xff0c;你没有权限进这个房间&#xff01;”没错&#xff0c;这就是你尝试访问某个网站或资源时可能会遇到的问题。别急&#xff0c;这里有一份秘籍&#xff0c;教你如…

Cobalt Strike四种提权方法

简介 Cobalt Strike是一款基于java的渗透测试神器&#xff0c;常被业界人称为CS神器。自3.0以后已经不在使用Metasploit框架而作为一个独立的平台使用&#xff0c;分为客户端与服务端&#xff0c;服务端是一个&#xff0c;客户端可以有多个&#xff0c;非常适合团队协同作战&a…

剧本杀小程序成为创业者新选择,剧本杀小程序开发

剧本杀作为现下年轻人最喜欢的新兴行业&#xff0c;发展前景非常乐观&#xff0c;即使剧本杀目前处于创新发展阶段&#xff0c;但剧本杀行业依然在快速发展中。 根据业内数据&#xff0c;预计2025年剧本杀市场规模能达到四百多亿元。市场规模的扩大自然也吸引来了不少的创业者…

最前端|Locofy试用报告:设计稿直接转换为代码

目录 一、调研目的 二、调研报告设计 三、调研报告 &#xff08;一&#xff09;操作步骤 &#xff08;二&#xff09;结果初见 (三&#xff09;初步结论 四、总结 五、补充 一、调研目的 初步调研的目标&#xff1a; locofy 的 实操流程locofy 涉及到的相关工作角色及其…

TOUGH系列软件实践技术应用

TOUGH系列软件是由美国劳伦斯伯克利实验室开发的&#xff0c;旨在解决非饱和带中地下水、热运移的通用模拟软件。和传统地下水模拟软件Feflow和Modflow不同&#xff0c;TOUGH系列软件采用模块化设计和有限积分差网格剖分方法&#xff0c;通过配合不同状态方程&#xff08;EOS模…

el-tree搜索的使用

2023.12.11今天我学习了如何对el-tree进行搜索的功能&#xff0c;效果如下&#xff1a; 代码如下&#xff1a; 重点部分&#xff1a;给el-tree设置ref&#xff0c;通过监听roleName的变化过滤数据。 default-expand-all可以设置默认展开全部子节点。 check可以拿到当前节点的…

程序员必读:Python 中如何完美处理日志记录?

日志记录在软件开发中扮演着至关重要的角色。它不仅可以帮助开发人员跟踪应用程序的状态和行为&#xff0c;还能提供有价值的诊断信息。Python 提供了内置的 logging 模块&#xff0c;为开发者提供了一个强大且灵活的日志记录工具。 日志的重要性 在软件开发中&#xff0c;对…

数字孪生的开发平台

数字孪生在国内得到了越来越多的关注&#xff0c;一些公司和平台提供了数字孪生的开发服务。以下是一些国内数字孪生的开发平台或服务提供商&#xff0c;希望对大家有所帮助。北京木奇移动技术有限公司&#xff0c;专业的软件外包开发公司&#xff0c;欢迎交流合作。 1.华为数字…

低功耗全极霍尔开关国产芯片D02,适用于手机或笔记本电脑等产品中,数字输出 2.4V~5.5V的电池供电

D02 是一款低功耗全极霍尔开关&#xff0c;用于检测施加的磁通量密度&#xff0c;并提供一个数字输出&#xff0c;该输出指示所感测磁通量幅度的当前状态。这些应用的一个例子是翻盖手机中的 ON/OFF 开关。 微功耗设计特别适合电池供电系统&#xff0c;如手机或笔记本电脑&…

短视频自媒体创作者都在用的去水印小程序

如今可以发短视频的平台越来越多&#xff0c;我们经常看到喜欢的视频想下载下来&#xff0c;或者当做手机壁纸&#xff0c;由于直接下载下来视频都会带有平台的水印&#xff0c;让我们用着看起来非常不美观&#xff0c;所以我们就要想办法去掉这个水印&#xff0c;下载没有水印…

HarmonyOS4.0从零开始的开发教程15HTTP数据请求

HarmonyOS&#xff08;十三&#xff09;HTTP数据请求 1 概述 日常生活中我们使用应用程序看新闻、发送消息等&#xff0c;都需要连接到互联网&#xff0c;从服务端获取数据。例如&#xff0c;新闻应用可以从新闻服务器中获取最新的热点新闻&#xff0c;从而给用户打造更加丰富…

ubuntu解决问题:E: Unable to locate package manpages-posix-dev

sudo apt-get install manpages-posix-dev 想要在ubuntu里面安装manpages-posix-dev这个包&#xff0c;发现弹出错误 E: Unable to locate package manpages-posix-dev 解决方法如下&#xff1a; 1 查看当前ubuntu的版本 abhishekitsfoss:~$ lsb_release -a No LSB module…

基于ssm神马物流系统论文

摘 要 本神马物流管理系统设计目标是实现神马物流的信息化管理&#xff0c;提高管理效率&#xff0c;使得神马物流管理作规范化、科学化、高效化。 本文重点阐述了神马物流管理系统的开发过程&#xff0c;以实际运用为开发背景&#xff0c;基于SSMVue框架&#xff0c;运用了Ja…

mybatis动态SQL-sql片段

1、建库建表 create database mybatis-example; use mybatis-example; create table emp (empNo varchar(40),empName varchar(100),sal int,deptno varchar(10) ); insert into emp values(e001,张三,8000,d001); insert into emp values(e002,李四,9000,d001); insert into…

用CHAT分析问题的作用

问CHAT&#xff1a;电网数据中心的数据生命周期管理的管理平台是数据资产目录管理平台&#xff0c;简述一下它的作用。 CHAT回复&#xff1a;数据资产目录管理平台 (Data Catalog Management Platform) 是电网数据中心对于数据生命周期管理的重要工具。 1. 提供统一视图&#…

量子计算挑战赛启动!空中客车公司和宝马集团联手发起

&#xff08;图片来源&#xff1a;网络&#xff09; 空中客车公司&#xff08;Airbus&#xff09;和宝马集团&#xff08;BMW&#xff09;共同发起了一项名为“探索量子迁移率”的全球量子计算挑战赛&#xff0c;旨在解决航空和汽车领域仍未克服的紧迫难题。 此次挑战赛汇聚了…

map|二分查找|离线查询|LeetCode:2736最大和查询

本文涉及的基础知识点 二分查找算法合集 题目 给你两个长度为 n 、下标从 0 开始的整数数组 nums1 和 nums2 &#xff0c;另给你一个下标从 1 开始的二维数组 queries &#xff0c;其中 queries[i] [xi, yi] 。 对于第 i 个查询&#xff0c;在所有满足 nums1[j] > xi 且…

css3 clip-path剪切图片

大致看了一下&#xff0c;反正以后用到就慢慢调吧 剪切四个角 clip-path: polygon(14px 0, calc(100% - 14px) 0, 100% 14px, 100% calc(100% - 14px), calc(100% - 14px) 100%, 14px 100%, 0 calc(100% - 14px), 0 14px); 三角形 clip-path: polygon(50% 0,0 100%, 100% 100…

工业级以太网交换机的功能介绍

随着互联网技术的迅猛发展&#xff0c;工业以太网在工业通信领域中发挥着重要作用。在整个工业通信行业中&#xff0c;工业以太网交换机作为关键的通信设备&#xff0c;具有非常重要的功能。那么&#xff0c;什么是工业以太网交换机呢&#xff0c;它有哪些功能呢&#xff1f; …

山西电力市场日前价格预测【2023-12-15】

1.日前价格预测 预测说明&#xff1a; 如上图所示&#xff0c;预测明日&#xff08;2023-12-15&#xff09;山西电力市场全天平均日前电价为279.14元/MWh。其中&#xff0c;最高日前电价为380.47元/MWh&#xff0c;预计出现在00:45。最低日前电价为181.13元/MWh&#xff0c;预…