Spark环境搭建和使用方法

目录

一、安装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.rhkb.cn/news/216978.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

go自带rpc框架生产环境使用demo

基础使用 序列化使用自带gob协议 server package mainimport ("net""net/rpc" )// 定义一个handler结构体 type HelloService struct { }// 定义handler方法,大小写&#xff0c;参数&#xff0c;返回值都是固定的&#xff0c;否则无法注册 func (receiv…

五、Microsoft群集服务(MSCS)环境的搭建

一、【目的】 学会利用Windows Server布置群集环境。 二、【设备】 FreeNAS11.2&#xff0c;Windows Server 2019 三、【要求】 学会利用Windows Server布置群集环境&#xff0c;掌握处理问题的能力。 配置表&#xff1a; 节点公网IP(public)内网IP(private)群集IP(clust…

vue2-安装elementUI时警告

警告内容&#xff1a;npm WARN deprecated core-js2.6.12: core-js<3.23.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up …

JavaScipt验证URL新方法(2023 年版)

JavaScript诞生以来&#xff0c;一直没有一种简单的方法验证URL&#xff0c;现在JavaScript新增了一个新方法——URL.canParse。 URL.canParse(https://www.stefanjudis.com); // true URL.canParse(www.stefanjudis.com); // falseURL.canParse() 是一种快速验证字符串是否为…

改进的A*算法的路径规划(1)

引言 近年来&#xff0c;随着智能时代的到来&#xff0c;路径规划技术飞快发展&#xff0c;已经形成了一套较为 成熟的理论体系。其经典规划算法包括 Dijkstra 算法、A*算法、D*算法、Field D* 算法等&#xff0c;然而传统的路径规划算法在复杂的场景的表现并不如人意&#xf…

【网络协议】LACP(Link Aggregation Control Protocol,链路聚合控制协议)

文章目录 LACP名词解释LACP工作原理互发LACPDU报文确定主动端确定活动链路链路切换 LACP和PAgP有什么区别&#xff1f;LACP与LAG的关系LACP模式更优于手动模式LACP模式对数据传输更加稳定和可靠LACP模式对聚合链路组的故障检测更加准确和有效 推荐阅读 LACP名词解释 LACP&…

【论文笔记】Gemini: A Family of Highly Capable Multimodal Models——细看Gemini

Gemini 【一句话总结&#xff0c;对标GPT4&#xff0c;模型还是transformer的docoder部分&#xff0c;提出三个不同版本的Gemini模型&#xff0c;Ultra的最牛逼&#xff0c;Nano的可以用在手机上。】 谷歌提出了一个新系列多模态模型——Gemini家族模型&#xff0c;包括Ultra…

Cocos Creator:创建棋盘

Cocos Creator&#xff1a;创建棋盘 创建地图三部曲&#xff1a;1. 创建layout组件2. 创建预制体Prefab&#xff0c;做好精灵贴图&#xff1a;3. 创建脚本LayoutSprite.ts收尾工作&#xff1a; 创建地图三部曲&#xff1a; 1. 创建layout组件 使用layout进行布局&#xff0c;…

云贝教育 |【分享课】12月14日周四PostgreSQL分享主题:PG的流复制

分享主题&#xff1a;PG的流复制 讲师&#xff1a;刘峰 时间&#xff1a;12月14日 周四 晚上 19:30 分享平台&#xff1a;微信视频号 云贝学院 分享内容&#xff1a; 流复制的工作原理流复制主从搭建流复制主从切换流复制添加/删除备节点流复制修改同步模式

【面试经典150 | 二叉树】对称二叉树

文章目录 写在前面Tag题目来源解题思路方法一&#xff1a;递归方法二&#xff1a;迭代 写在最后 写在前面 本专栏专注于分析与讲解【面试经典150】算法&#xff0c;两到三天更新一篇文章&#xff0c;欢迎催更…… 专栏内容以分析题目为主&#xff0c;并附带一些对于本题涉及到的…

产品经理必掌握自定义元件流程图泳道图

&#x1f3ac; 艳艳耶✌️&#xff1a;个人主页 &#x1f525; 个人专栏 &#xff1a; 《产品经理管理项目周期及【Axure RP9】简介&安装&基本使用》 ⛺️ 越努力 &#xff0c;越幸运 目录 一、什么是自定义元件 1.1如何自定义元件 二、什么是流程图 &…

软件设计原则:耦合与内聚

目录 什么是耦合&#xff1f; 耦合的定义 类型和影响 什么是内聚&#xff1f; 内聚的定义 类型和优点 耦合与内聚的平衡 结语 在软件开发中&#xff0c;良好的设计是构建可维护、可扩展和可理解的系统的关键。耦合和内聚是软件设计中两个至关重要的概念&#xff0c;它们…

教你用JMeter做接口测试的几个简单实例

前言 这次小项目是基于HTTP协议的接口&#xff0c;通过JMeter来完成一次基本的接口测试&#xff0c;完整复习一下JMeter的基本操作。 在实际项目中&#xff0c;测试也要先从开发那拿到接口说明书&#xff0c;分析熟悉业务后&#xff0c;写接口的测试用例&#xff0c;最后再在…

springboot框架的客制化键盘个性化商城网站

客制化键盘网站是从客制化键盘的各部分统计和分析&#xff0c;在过程中会产生大量的、各种各样的数据。本文以客制化键盘管理为目标&#xff0c;采用B/S模式&#xff0c;以Java为开发语言&#xff0c;Jsp为开发技术、idea Eclipse为开发工具&#xff0c;MySQL为数据管理平台&am…

MyBatis 四大核心组件之 ResultSetHandler 源码解析

&#x1f680; 作者主页&#xff1a; 有来技术 &#x1f525; 开源项目&#xff1a; youlai-mall &#x1f343; vue3-element-admin &#x1f343; youlai-boot &#x1f33a; 仓库主页&#xff1a; Gitee &#x1f4ab; Github &#x1f4ab; GitCode &#x1f496; 欢迎点赞…

Leetcode—78.子集【中等】

2023每日刷题&#xff08;五十九&#xff09; Leetcode—78.子集 算法思想 实现代码 class Solution { public:vector<vector<int>> subsets(vector<int>& nums) {int len nums.size();vector<int> path;vector<vector<int>> ans;f…

通过异步序列化提高图表性能 Diagramming for WPF

通过异步序列化提高图表性能 2023 年 12 月 6 日 MindFusion.Diagramming for WPF 4.0.0 添加了异步加载和保存文件的功能&#xff0c;从而提高了响应能力。 MindFusion.Diagramming for WPF 提供了一个全面的工具集&#xff0c;用于创建各种图表&#xff0c;包括组织结构图、图…

肥猫游戏报价器|计价器|王者荣耀代练陪练等游戏报价器软件介绍说明

目录 1. 前言2. 软件著作权3. 软件使用说明3.1 进入软件3.2 用户登录3.3 首页3.4 报价器3.4.1 总体介绍3.4.2 王者报价器3.4.3 LOL手游报价器3.4.4 英雄联盟报价器3.4.5 云顶之弈报价器3.4.7 王者水晶报价器3.4.8 和平精英报价器3.4.9 蛋仔派对报价器3.4.10 穿越火线报价器3.4.…

HarmonyOS4.0从零开始的开发教程11Video组件的使用

HarmonyOS&#xff08;九&#xff09;Video组件的使用 概述 在手机、平板或是智慧屏这些终端设备上&#xff0c;媒体功能可以算作是我们最常用的场景之一。无论是实现音频的播放、录制、采集&#xff0c;还是视频的播放、切换、循环&#xff0c;亦或是相机的预览、拍照等功能…

Python中容易被忽视的核心功能

Python是一门富有魅力的编程语言&#xff0c;拥有丰富的功能和库&#xff0c;以及强大的社区支持。然而&#xff0c;有一些核心功能经常被忽视&#xff0c;而它们实际上可以极大地提高代码的质量、可读性和性能。 1. 解析命令行参数的argparse库 很多Python开发者在编写命令行…