怎样用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 程序并提交到集群中运行相关推荐

  1. 编写一个汇编语言程序,将字符串Hello World中的全部小写字母转换为大写字母,并存放回原地址处。

    编写一个汇编语言程序,将字符串"Hello World"中的全部小写字母转换为大写字母,并存放回原地址处. P176 4.10 编程思路:首先DATA段中,定义string存放字符 ...

  2. 编写一个Java程序实现多线程,在线程中输出线程的名字,隔300毫秒输出一次,共输出20次。

    编写一个Java程序实现多线程,在线程中输出线程的名字,隔300毫秒输出一次,共输出20次. 一.ThreadDemo class ThreadDemo extends Thread {public ...

  3. Hadoop集群中运行MapReduce程序错误记录

    Exception in thread "main" java.lang.SecurityException: Invalid signature file digest for ...

  4. spark调用python_在MRS集群中使用Python3.7运行PySpark程序,调用RDD的take函数报错处理...

    现象 如果我们安装了python3.7版本来运行spark,并且用到了RDD的take函数,就会报错:RuntimeError: generator raised StopIteration 我们可以 ...

  5. 编码器ABZ三相,请利用STM32实现Z脉冲对编码器计数值清零,请编写一个STM32程序...

    答:首先,需要在STM32中创建一个定时器,用于每隔一段时间就检测Z脉冲的输入状态:其次,可以使用STM32的中断机制,在检测到Z脉冲变为高电平时,就将编码器的计数值清零:最后,使用STM32的计数/ ...

  6. Spark系列之Spark在不同集群中的架构

    title: Spark系列 第十二章 Spark在不同集群中的架构 ​ Spark 注重建立良好的生态系统,它不仅支持多种外部文件存储系统,提供了多种多样的集群运行模式.部署在单台机器上时,既可以用 ...

  7. 小白学习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 ...

  8. Spark在不同集群中的运行架构

    Spark注重建立良好的生态系统,它不仅支持多种外部文件存储系统,提供了多种多样的集群运行模式.部署在单台机器上时,既可以用本地(Local)模式运行,也可以使用伪分布式模式来运行:当以分布式集群部署 ...

  9. spark在集群上运行

    1.spark在集群上运行应用的详细过程 (1)用户通过spark-submit脚本提交应用 (2)spark-submit脚本启动驱动器程序,调用用户定义的main()方法 (3)驱动器程序与集群管 ...

最新文章

  1. 【深度学习】基于Pytorch进行深度神经网络计算(二)
  2. 在Windows Server 2012中如何快速开关桌面上经典的“计算机、我的文档”等通用图标...
  3. 设计模式11-桥接模式
  4. Tomcat的安装和运行
  5. Nginx教程-日志配置
  6. 文献管理与信息分析_全球酒店PMS行业市场现状分析,酒店信息管理全链条的灵魂...
  7. 惠普笔记本电脑好吗_十代酷睿释放强大性能,惠普战66三代助你无往不胜
  8. 安装ps时无法验证订阅状态_关于宝马B38/B48发动机无法启动的技术通报
  9. 新年新服务: MVP 播客上线
  10. 螺杆泵matlab,基于Matlab与VC++混合编程的螺杆泵转子型线设计
  11. Leecode 953. Verifying an Alien Dictionary[Easy]
  12. iOS开发-获取View截图图像
  13. 微信小程序获取openId,传参问题导致参数无效(errcode: 40013、errcode:40125、errcode“:40029)
  14. 游戏引擎架构-学习笔记
  15. JAVA后台,对上传资源限定大小
  16. android 备份 通信录,如何简单备份手机通讯录?
  17. 使用 Vue 和 Electron 开发一款简单的 Markdown 编辑器
  18. 不可或缺的LTO磁带存储
  19. 操作系统实验——进程调度 实验报告
  20. AMD 硬解码开发(四)之边摸索边编译samples

热门文章

  1. Mars 是什么、能做什么、如何做的——记 Mars 在 PyCon China 2018 上的分享...
  2. Python | 分析txt文档特定词汇的词频,以《天龙八部》为例
  3. 《Dragon Runaway》免费发布啦!请帮助小飞龙赶快逃离末日吧!
  4. Elasticsearch在thinkphp5中的使用增删改查(模糊查询、批量查询)
  5. matlab等高线不显示,Matlab提示ZData 为非有限时,无法显示等高线图
  6. PIC单片机入门笔记(新手学PIC必看)——基于PIC16F886
  7. php工程师是干什么的
  8. windows 2008 r2或win7安装SP1补丁,安装sqlserver 2012
  9. vbs新年祝福,怎么样
  10. faile什么意思_fail是什么意思_fail在线翻译_英语_读音_用法_例句_海词词典