从零到一编写一个 spark 程序并提交到集群中运行
怎样用IDEA编写spark程序并提交到集群上运行
1.安装scala sdk
1.下载 scala 安装程序
#下载地址
https://www.scala-lang.org/download
#windwos 下安装
https://downloads.lightbend.com/scala/2.13.1/scala-2.13.1.msi
2.配置环境变量
- 新增系统变量 SCALA_HOME
- 配置PATH环境变量新增:%SCALA_HOME%\bin;
- 配置CLASSPATH:
- 启动cmd:运行出现如下表示安装成功
2. IDEA 中的配置
1.安装scala插件
2. 创建 mave 项目
3.项目建好以后右键项目名称
3. 增加scala 框架的支持
4. 导入maven依赖
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>cn.itcast</groupId><artifactId>spark</artifactId><version>0.1.0</version><properties><scala.version>2.11.8</scala.version><spark.version>2.2.0</spark.version><slf4j.version>1.7.16</slf4j.version><log4j.version>1.2.17</log4j.version></properties><dependencies><dependency><groupId>org.scala-lang</groupId><artifactId>scala-library</artifactId><version>${scala.version}</version></dependency><dependency><groupId>org.apache.spark</groupId><artifactId>spark-core_2.11</artifactId><version>${spark.version}</version></dependency><dependency><groupId>org.apache.hadoop</groupId><artifactId>hadoop-client</artifactId><version>2.6.0</version></dependency><dependency><groupId>org.slf4j</groupId><artifactId>jcl-over-slf4j</artifactId><version>${slf4j.version}</version></dependency><dependency><groupId>org.slf4j</groupId><artifactId>slf4j-api</artifactId><version>${slf4j.version}</version></dependency><dependency><groupId>org.slf4j</groupId><artifactId>slf4j-log4j12</artifactId><version>${slf4j.version}</version></dependency><dependency><groupId>log4j</groupId><artifactId>log4j</artifactId><version>${log4j.version}</version></dependency><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.10</version><scope>provided</scope></dependency></dependencies><build><sourceDirectory>src/main/scala</sourceDirectory><testSourceDirectory>src/test/scala</testSourceDirectory><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>3.0</version><configuration><source>1.8</source><target>1.8</target><encoding>UTF-8</encoding></configuration></plugin><plugin><groupId>net.alchim31.maven</groupId><artifactId>scala-maven-plugin</artifactId><version>3.2.0</version><executions><execution><goals><goal>compile</goal><goal>testCompile</goal></goals><configuration><args><arg>-dependencyfile</arg><arg>${project.build.directory}/.scala_dependencies</arg></args></configuration></execution></executions></plugin><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-shade-plugin</artifactId><version>3.1.1</version><executions><execution><phase>package</phase><goals><goal>shade</goal></goals><configuration><filters><filter><artifact>*:*</artifact><excludes><exclude>META-INF/*.SF</exclude><exclude>META-INF/*.DSA</exclude><exclude>META-INF/*.RSA</exclude></excludes></filter></filters><transformers><transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer"><mainClass></mainClass></transformer></transformers></configuration></execution></executions></plugin></plugins></build>
</project>
5.选择scala sdk
6. 创建 scala工作目录
本地调试
- 新建 worldcount.txt 文件写入一下内容
spark hello
hadoop hello
java hello
golang hello
def main(args: Array[String]): Unit = {// 1. 创建 Spark Contextval conf = new SparkConf().setMaster("local[2]").setAppName("test")val sc: SparkContext = new SparkContext(conf)// 2. 读取文件并计算词频val source: RDD[String] = sc.textFile("e:/wordcount.txt", 2)val words: RDD[String] = source.flatMap { line => line.split(" ") }val wordsTuple: RDD[(String, Int)] = words.map { word => (word, 1) }val wordsCount: RDD[(String, Int)] = wordsTuple.reduceByKey { (x, y) => x + y }// 3. 查看执行结果wordsCount.foreach(println(_))}
运行结果
(spark,1)
(golang,1)
(hadoop,1)
(hello,4)
(java,1)
集群运行
1.将wordcount.txt 文件上传到 hdfs
hdfs dfs -put wordcount.txt /data
2.代码编写
def main(args: Array[String]): Unit = {// 1. 创建SparkContextval conf = new SparkConf().setAppName("word_count")val sc = new SparkContext(conf)// 2. 加载文件// 1. 准备文件// 2. 读取文件// RDD 特点:// 1. RDD是数据集// 2. RDD是编程模型// 3. RDD相互之间有依赖关系// 4. RDD是可以分区的val rdd1: RDD[String] = sc.textFile("hdfs:///data/wordcount.txt")// 3. 处理// 1. 把整句话拆分为多个单词val rdd2: RDD[String] = rdd1.flatMap(item => item.split(" ") )// 2. 把每个单词指定一个词频1val rdd3: RDD[(String, Int)] = rdd2.map(item => (item, 1) )// 3. 聚合val rdd4: RDD[(String, Int)] = rdd3.reduceByKey((curr, agg) => curr + agg )// 4. 得到结果val result: Array[(String, Int)] = rdd4.collect()result.foreach(item => println(item))}
3.spark-submit 命令
spark-submit [options] < app jar> < app options>
app jar 程序 Jar 包
- app jar 程序 Jar 包
- app options 程序 Main 方法传入的参数
- options 提交应用的参数, 可以有如下选项
options 可选参数
参数 | 解释 |
---|---|
–master < url> | 同 Spark shell 的 Master, 可以是spark, yarn, mesos, kubernetes等 URL |
–deploy-mode < client or cluster> | Driver 运行位置, 可选 Client 和 Cluster, 分别对应运行在本地和集群(Worker)中 |
–class < class full name> | Jar 中的 Class, 程序入口 |
–jars < dependencies path> | 依赖 Jar 包的位置 |
–driver-memory < memory size> | Driver 程序运行所需要的内存, 默认 512M |
–executor-memory < memory size> | Executor 的内存大小, 默认 1G |
4.提交到 Spark Standalone 集群中运行
1.打包
2.生成的jar包
3.进入安装 spark 安装目录 /bin 文件夹下执行脚本
cd /user/local/spark/bin
spark-submit --master spark://zhen:7077 \ #提交的主机
--class scl.MyRdd \ #包路径
/home/spark/original-lmspark-1.0-SNAPSHOT.jar #要运行的jar包
4.观察后台管理页面可以看到任务正在运行
5.运行结果
结束
好了今天就讲到这里了,欢迎加我微信一起提升,如有帮助感谢赞赏。
从零到一编写一个 spark 程序并提交到集群中运行相关推荐
- 编写一个汇编语言程序,将字符串Hello World中的全部小写字母转换为大写字母,并存放回原地址处。
编写一个汇编语言程序,将字符串"Hello World"中的全部小写字母转换为大写字母,并存放回原地址处. P176 4.10 编程思路:首先DATA段中,定义string存放字符 ...
- 编写一个Java程序实现多线程,在线程中输出线程的名字,隔300毫秒输出一次,共输出20次。
编写一个Java程序实现多线程,在线程中输出线程的名字,隔300毫秒输出一次,共输出20次. 一.ThreadDemo class ThreadDemo extends Thread {public ...
- Hadoop集群中运行MapReduce程序错误记录
Exception in thread "main" java.lang.SecurityException: Invalid signature file digest for ...
- spark调用python_在MRS集群中使用Python3.7运行PySpark程序,调用RDD的take函数报错处理...
现象 如果我们安装了python3.7版本来运行spark,并且用到了RDD的take函数,就会报错:RuntimeError: generator raised StopIteration 我们可以 ...
- 编码器ABZ三相,请利用STM32实现Z脉冲对编码器计数值清零,请编写一个STM32程序...
答:首先,需要在STM32中创建一个定时器,用于每隔一段时间就检测Z脉冲的输入状态:其次,可以使用STM32的中断机制,在检测到Z脉冲变为高电平时,就将编码器的计数值清零:最后,使用STM32的计数/ ...
- Spark系列之Spark在不同集群中的架构
title: Spark系列 第十二章 Spark在不同集群中的架构 Spark 注重建立良好的生态系统,它不仅支持多种外部文件存储系统,提供了多种多样的集群运行模式.部署在单台机器上时,既可以用 ...
- 小白学习Spark03-在集群上运行Spark
03 在集群上运行Spark 3.1 Spark运行架构 3.1.1 驱动器节点 3.1.2 执行器节点 3.1.3 集群管理器 3.1.4 启动Spark程序 3.1.5 小结 3.2 使用spar ...
- Spark在不同集群中的运行架构
Spark注重建立良好的生态系统,它不仅支持多种外部文件存储系统,提供了多种多样的集群运行模式.部署在单台机器上时,既可以用本地(Local)模式运行,也可以使用伪分布式模式来运行:当以分布式集群部署 ...
- spark在集群上运行
1.spark在集群上运行应用的详细过程 (1)用户通过spark-submit脚本提交应用 (2)spark-submit脚本启动驱动器程序,调用用户定义的main()方法 (3)驱动器程序与集群管 ...
最新文章
- 【深度学习】基于Pytorch进行深度神经网络计算(二)
- 在Windows Server 2012中如何快速开关桌面上经典的“计算机、我的文档”等通用图标...
- 设计模式11-桥接模式
- Tomcat的安装和运行
- Nginx教程-日志配置
- 文献管理与信息分析_全球酒店PMS行业市场现状分析,酒店信息管理全链条的灵魂...
- 惠普笔记本电脑好吗_十代酷睿释放强大性能,惠普战66三代助你无往不胜
- 安装ps时无法验证订阅状态_关于宝马B38/B48发动机无法启动的技术通报
- 新年新服务: MVP 播客上线
- 螺杆泵matlab,基于Matlab与VC++混合编程的螺杆泵转子型线设计
- Leecode 953. Verifying an Alien Dictionary[Easy]
- iOS开发-获取View截图图像
- 微信小程序获取openId,传参问题导致参数无效(errcode: 40013、errcode:40125、errcode“:40029)
- 游戏引擎架构-学习笔记
- JAVA后台,对上传资源限定大小
- android 备份 通信录,如何简单备份手机通讯录?
- 使用 Vue 和 Electron 开发一款简单的 Markdown 编辑器
- 不可或缺的LTO磁带存储
- 操作系统实验——进程调度 实验报告
- AMD 硬解码开发(四)之边摸索边编译samples
热门文章
- Mars 是什么、能做什么、如何做的——记 Mars 在 PyCon China 2018 上的分享...
- Python | 分析txt文档特定词汇的词频,以《天龙八部》为例
- 《Dragon Runaway》免费发布啦!请帮助小飞龙赶快逃离末日吧!
- Elasticsearch在thinkphp5中的使用增删改查(模糊查询、批量查询)
- matlab等高线不显示,Matlab提示ZData 为非有限时,无法显示等高线图
- PIC单片机入门笔记(新手学PIC必看)——基于PIC16F886
- php工程师是干什么的
- windows 2008 r2或win7安装SP1补丁,安装sqlserver 2012
- vbs新年祝福,怎么样
- faile什么意思_fail是什么意思_fail在线翻译_英语_读音_用法_例句_海词词典