千家信息网

在IDEA中编写spark程序

发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,这里以一个scala版本的word count 程序为例:①创建一个maven项目:②填写maven的GAV:③填写项目名称:④ 创建好 maven 项目后,点击 Enable Auto-Import
千家信息网最后更新 2026年11月03日在IDEA中编写spark程序

这里以一个scala版本的word count 程序为例:
①创建一个maven项目:

②填写maven的GAV:

③填写项目名称:

④ 创建好 maven 项目后,点击 Enable Auto-Import

⑤配置pom.xml文件:

    UTF8   1.8   1.8   UTF-8   2.11.8   2.3.1   2.7.6   2.11       org.scala-lang   scala-library   ${scala.version}       org.apache.spark   spark-core_2.11   ${spark.version}       org.apache.spark   spark-sql_2.11   ${spark.version}       org.apache.spark   spark-streaming_2.11   ${spark.version}       org.apache.spark   spark-graphx_2.11   ${spark.version}       org.apache.spark   spark-mllib_2.11   ${spark.version}       org.apache.hadoop   hadoop-client   ${hadoop.version}   

编写代码:

object WordCount {    def main(args: Array[String]): Unit = {        //获取集群入口        val conf: SparkConf = new SparkConf()        conf.setAppName("WordCount")        val sc = new SparkContext(conf)        //从 HDFS 中读取文件        val lineRDD: RDD[String] = sc.textFile("hdfs://zzy/data/input/words.txt")        //做数据处理        val wordRDD: RDD[String] = lineRDD.flatMap(line=>line.split("\\s+"))        val wordAndCountRDD: RDD[(String, Int)] = wordRDD.map(word=>(word,1))        //将结果写入到 HDFS 中        wordAndCountRDD.reduceByKey(_+_).saveAsTextFile("hdfs://zzy/data/output")        //关闭编程入口        sc.stop()    }}

打jar包:
在pom.xml中加入相应的插件:

                                    maven-clean-plugin          3.1.0                                  maven-resources-plugin          3.0.2                          maven-compiler-plugin          3.8.0                          maven-surefire-plugin          2.22.1                          maven-jar-plugin          3.0.2                          maven-install-plugin          2.5.2                          maven-deploy-plugin          2.8.2                                  maven-site-plugin          3.7.1                          maven-project-info-reports-plugin          3.0.0                    

然后:



将jar包上传到集群中运行:

spark-submit \--class com.zy.scala.WordCount \--master yarn \--deploy-mode cluster \--driver-memory 200M \--executor-memory 200M \--total-executor-cores 1 \hdfs://zzy/data/jar/ScalaTest-1.0-SNAPSHOT.jar \

此时在yarn的web就能查看相应的程序的运行进度。
这时候,程序总是异常的结束:

我就使用:
yarn logs -applicationId application_1522668922644_40211 查看了一下报错信息。
结果:not fount class :scala.WordCount.
然后我就在想是不是jar包出现了问题,我就打开了,之前上传的jar包,果然根本找不到 我打jar的程序,只有一个,META-INF,此时 我就百思不得不得解,然后由重新反复尝试了很多次,还是解决不了。后来吃个饭回来,突然想到是不是maven不能将scala编写的程序打成jar包,后来通过百度,发现了:
maven 默认只编译java 的文件,而不会编译scala 文件。但是maven 提供了 能够编译scala 的类库。
好心的博主:scala 在IDEA打jar包相关问题:https://blog.csdn.net/freecrystal_alex/article/details/78296851
然后 我修改了pom.xml文件:
http://down.51cto.com/data/2457588
按照上述的步骤,重新的向集群提交了一次任务,结果不尽人意,又出错了:
但是这一次错误和上次的不同(说明上一个问题已经解决):

这才明白,原来是Driver进程分配的内存太小了,最少应该大于450M,之后我又修改了 --driver-memory 512M --executor-memory 512M,重新提交任务。结果运行成功!!!

注意:
这里使用的是yarn的任务调用,不是spark自带的standalone,需要加入的参数:
--master yarn
--deploy-mode cluster
这里的--deploy-mode,使用的是cluster集群模式,client是客户端模式。
二者的区别是:client表示,在哪个节点提交,Driver就哪里启动,而cluster模式表示当将Driver放入到集群中启动。

程序 文件 集群 结果 任务 模式 问题 项目 编译 运行 入口 不同 成功 不尽人意 人意 代码 信息 内存 参数 只有 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 盈实互联网科技 互联网金融公司科技 宜安科技 互联网金融 上游互联网科技 苏州大垚互联网科技 华中科技有哪些互联网大佬 广州优美互联网科技 承德科技产业互联网发展 互联网企业和科技型企业 来此购互联网科技有限公司 河南住房之家互联网科技 互联网科技大赛获奖感言 科技互联网海报 银行科技岗属于互联网吗 富国互联网金融科技混合基金 上海乐五互联网科技有限公司 科技信息时代互联网发展 数字互联网科技有限公司 重庆科技产业互联网有哪些 广东猫王互联网科技有限公司电话 金融科技还是互联网 有木互联网科技 广州善班互联网科技 互联网科技股有哪些 米聚互联网科技南京有限公司排面 互联网公司黑科技创始人 城市宝互联网科技有限公司 广州梦谷互联网科技有限公司领导 现代互联网科技公司 互联网科技创业有什么好项目
0