Spark提交作业为什么一定要conf.setJars(),它的具体作用到底是什么?

代码如下:

package wordcount

import org.apache.spark.SparkContext
import org.apache.spark.SparkConf
import org.apache.spark.sql.SparkSession
import org.apache.spark.rdd.RDD

object WordCount extends App {
  val conf = new SparkConf()
    //就是这里,为什必须要有它,它的具体作用到底是啥?
  .set("spark.jars", "src/main/resources/sparkcore.jar,")  
  .set("spark.app.name", "WordCount")
  .set("spark.master", "spark://master:7077")
  .set("spark.driver.host", "win")
  .set("spark.executor.memory", "512M")
  .set("spark.eventLog.enabled", "true")
  .set("spark.eventLog.dir", "hdfs://master:9000/spark/history")

  val sc=new SparkContext(conf) 
  val lines:RDD[String]=sc.textFile("hdfs://master:9000/user/dsf/wordcount_input")
  val words:RDD[String]=lines.flatMap(_.split(" "))
  val wordAndOne:RDD[(String,Int)]=words.map((_,1))
  val reduce:RDD[(String,Int)]=wordAndOne.reduceByKey(_+_)
  val sorted:RDD[(String,Int)]=reduce.sortBy(_._2, ascending=false,numPartitions=1)
  sorted.saveAsTextFile("hdfs://master:9000/user/dsf/wordcount_output")

  println("\ntextFile:    "+lines.collect().toBuffer)
  println("flatMap:     "+words.collect().toBuffer)
  println("map:         "+wordAndOne.collect().toBuffer)
  println("reduceByKey: "+reduce.collect().toBuffer)
  println("sortBy:      "+sorted.collect().toBuffer)

  sc.stop()
} 

/**
在Linux终端运行此应用的命令行:
spark-submit \
--master spark://master:7077 \
--class wordcount.WordCount \
sparkcore.jar
*/

如果没有.set("spark.jars", "src/main/resources/sparkcore.jar,")这段代码,它会报这个异常:

Exception in thread "main" org.apache.spark.SparkException: Job aborted due to stage failure: Task 0 in stage 0.0 failed 4 times, most recent failure: Lost task 0.3 in stage 0.0 (TID 6, 192.168.1.15, executor 0): java.lang.ClassCastException: cannot assign instance of scala.collection.immutable.List$SerializationProxy to field org.apache.spark.rdd.RDD.org$apache$spark$rdd$RDD$$dependencies_ of type scala.collection.Seq in instance of org.apache.spark.rdd.MapPartitionsRDD

这是我在Spark官网找到的:

翻译过来是:
spark.jars: 以逗号分隔的本地jar列表,包含在驱动程序和执行程序类路径中。

按照官网的意思,是Driver和Excutor都应该有程序的jar包,可我不明白它的具体原理,哪位好心人给讲解一下,谢谢!

0

1个回答

设置主函数的位置,给spark-core的jar一个主函数位置。驱动器和执行器中的确有spark-core的核心jar包,但是你手动设置了很多本地设置,可能需要设置设置本地执行主函数的jar包
试着如下设置:图片说明
我平时没有像你那麽设置,我这样的配置也可以,不过需要在打包时设置一下主函数。

0
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
Spark提交作业运行原理及其参数设置
运行原理:样例:/opt/spark/bin/spark-submit \--conf spark.num.executors=4 \--conf spark.executor.memory=16g \--conf spark.executor.cores=4 \--conf spark.debug.maxToStringFields=1024  \--conf spark.driver.memo...
spark 2版本 中stage划分和stage作业提交详解
spark、stage、submit
Spark Yarn 提交作业
初学Spark时,部署的是Standalone模式(集成了HA),写的测试程序一般创建上下文时如下: 此处master设置为管理节点的集群地址(spark webui上显示的地址) 。 之后将测试代码打包成jar包,上传到服务器,使用spark-submit提交作业。 提交命令: spark-submit --master spark://s44:7077 --name MyWor...
Spark作业提交到集群执行详解
Spark作业提交到集群的命令格式如下 ./bin/spark-submit \ --class <main-class> \ --master <master-url> \ --deploy-mode <deploy-mode> \ --conf <key>=<value> \ ... # other optio...
Spark(三)————作业提交流程
1、Spark核心API [SparkContext] 连接到spark集群,入口点. [RDD] 它是一个分区的集合. 弹性分布式数据集. 不可变的数据分区集合. 基本操作(map filter , persist) 分区列表 //数据 应用给每个切片的计算函数 //行为 到其他RDD的依赖列表 //依赖关系 (可...
简单Spark作业编写与提交执行
本文分析一个简单的spark作业,编写并使用spark-submit提交执行过程。
Spark作业提交执行流程源码图
环境:代码图基于Spark 2.2.1 工具:OmniGraffe最近想完整梳理一下作业提交流程,通过自己的理解画图来学习Spark。1) 首先了解作业提交后RDD的流动情况 如上图,以RDD构建的DAG给DAGScheduler进行stage划分,DAGScheduler负责stage层面的提交和失败处理。 然后提交taskSet给TaskScheduler进行处理,TaskScheduler
Spark 的作业执行原理
参见书籍 《图解Spark:核心技术与案例实战》要点概述** 作业(Job)提交后由行动操作触发作业执行,根据RDD的依赖关系构建DAG图,由DAGSheduler(面向阶段的任务调度器)解析** DAGSheduler在解析DAG图时是以RDD的依赖是否为宽依赖,当遇到宽依赖就划分为一个新的调度阶段。每个调度阶段都包含一个或者是多个任务(Task),多个Task组成任务集,提交给TaskShed...
Spark中RDD是什么?
一、RDD是什么?RDD是一个弹性可复原的分布式数据集!RDD是一个逻辑概念,一个RDD中有多个分区,一个分区在Executor节点上执行时,他就是一个迭代器。一个RDD有多个分区,一个分区肯定在一台机器上,但是一台机器可以有多个分区,我们要操作的是分布在多台机器上的数据,而RDD相当于是一个代理,对RDD进行操作其实就是对分区进行操作,就是对每一台机器上的迭代器进行操作,因为迭代器引用着我们要操...
Spark 作业提交
Spark 作业提交一、作业打包jar1、工程目录结构2、不同运行模式的打包方式 Local模式与Yarn模式不同就在于:Local模式运行时jar包仅在本地存在,而Yarn模式需要在每台从机的环境上都要相同的jar包,因此在Yarn 模式打jar包时,需要将pom.xml中依赖的 所有jar包一起打进去。  (1)Local 模式对maven 工程进行编译为jar 文件           mv...
spark入门之二 spark作业提交流程
spark 作业提交
spark提交作业命令
spark提交作业命令 ./spark-submit --class c01_RDD --master spark://ubuntu:7077 --executor-memory 512M --total-executor-cores 2 /root/app/wc.jar hdfs://localhost:9000/test hdfs://localhost:9000/output...
Spark基础入门(三)--------作业执行方式
(一)SparkContext 代表对集群的一个连接 (二)Job提交过程 底层分析,包括DAGScheduler,taskScheduler的分析 (三)、Spark提交Job的顺序的小实验
Spark为什么要在Hadoop基础之上搭建
今天突然想到这个问题   但网上都是些复制粘贴的内容    不能很好地解答   经过查找资料   我在这里给出我的说明  仅供参考:      尽管Spark相对于Hadoop而言具有较大优势(速度快),但Spark并不能完全替代Hadoop,主要用于替代Hadoop中的MapReduce计算模型。(spark中也有MapReduce 但还有更多的用于处理的算子  相对来说处理更加多样化   更重...
Spark提交参数说明和常见优化
打开微信扫一扫,关注微信公众号【数据与算法联盟】 转载请注明出处:http://blog.csdn.net/gamer_gyt 博主微博:http://weibo.com/234654758 Github:https://github.com/thinkgamer 最近在搞一个价格分类模型,虽说是分类,用的是k...
SparkContext干了些什么
SparkContext
hue提交spark jar任务的使用文档
hue中对spark任务的支持,是靠oozie支撑的。文档中提供了如何在hue中提交spark作业的操作步骤。
Spark学习(单机本地提交作业)
1)spark-1.3.0-bin-hadoop2.4.tar 解压后是可以直接在Windows下运行的,当然这时只是单机模式。2)本地提交的方法是在Spark的解压主目录下(CMD)进入,输入:bin\spark-submit --class ScalaMain ./test/ScalaJarT.jar local其中ScalaMain是类名(记得命名空间不能丢,我的这个类是没有命名空间的),本
spark配置IntelliJ开发环境详解
1.花一天半时间配置spark开发环境RD同学开发代码肯定需要开发环境。为了配置好spark的本地开发测试环境,宝宝前后花了一天半的时间。各种踩坑各种无奈各种崩溃。文章以下内容都是宝宝一天半时间的实践吐血总结。绝对值得同学们学习收藏。2.大坑eclipse不适合spark因为宝宝之前一直用的是eclipse,所以自然想搭建eclipse+scala+maven+spark的开发测试环境。但是经过一天
Spark简介与功能
Spark是基于内存计算的大数据分布式计算框架。Spark基于内存计算,提高了在大数据环境下数据处理的实时性,同时保证了高容错性和高可伸缩性,允许用户将Spark部署在大量廉价硬件之上,形成集群。 -分布式计算 -内存计算 -容错 -所计算范式 2009年:诞生于AMPLab 2010年:开源 2013年6月:Apache孵化器项目 2014年2月:Apache顶级项目
Spark 的Shuffle过程详解
一、Shuffle的作用是什么? Shuffle的中文解释为“洗牌操作”,可以理解成将集群中所有节点上的数据进行重新整合分类的过程。其思想来源于hadoop的mapReduce,Shuffle是连接map阶段和reduce阶段的桥梁。由于分布式计算中,每个阶段的各个计算节点只处理任务的一部分数据,若下一个阶段需要依赖前面阶段的所有计算结果时,则需要对前面阶段的所有计算结果进行重新整合和分类,这就
windows远程提交Spark作业到linux集群,并尝试多种模式运行
本地构建java+scala混合工程: 测试使用本地win10做driver java远程提交代码到集群 sparkContext版本 sparkSession版本 scala远程提交代码到集群 sparkContext版本 sparkSession版本 本地构建java+scala混合工程: 创建maven项目,选择scala-archetype-simp...
spark提交作业的几种模式
1、用yarn-cluster模式提交spark作业/usr/local/spark/bin/spark-submit \--class org.apache.spark.example.JavaSparkPi \--master yarn-cluster \--num-executors 1 \--driver-memory 10m \--executor-memory 10m \--execu...
大数据学习之路88-将jar包提交到spark集群需要注意的
我们可以将上一节将数据写入MySql的程序用maven将程序打包,然后将jar包提交到spark集群。 执行语句如下: 我们可以看到这里指定了两次mysql的连接驱动,这是为什么呢? 因为Driver端获取数据库中的元数据信息的时候需要连接驱动,executor真正执行的时候也需要和数据库打交道,也需要数据库的连接驱动。...
spark提交任务采用yarn集群提交方法
spark提交任务采用yarn集群提交方法 先启动 hadoop集群 再启动yarn 再启动spark集群 spark提交任务命令 spark-submit --class org.apache.spark.examples.SparkPi --master yarn --deploy-mode cluster /home/hadoop3/app/spark/examples/jar...
为什么选择scala而不用java开发spark
你可能会认为我根本无法对前面一小节那个畸形的函数给出个合理的解释。我开始学习函数式编程时就是这么认为的。不过我是错了。有很好的理由使用这种风格,当然其中一些属主观因素。例如,函数式程序被认为更容易阅读。因为连街上乱跑的娃娃都知道,是否容易理解是个见仁见智的判断,所以我将略去这些主观方面的理由。幸运的是,还有很多的客观理由。 单元测试 因为函数式编程的每一个符号都是 final 的,没有函数产生...
spark-on-yarn作业提交缓慢优化
spark on yanr方式运行计算作业,发现作业提交缓慢 根据日志,提交缓慢主要在两个过程: 一、uploading file太慢 17/05/09 10:13:28 INFO yarn.Client: Uploading resource file:/opt/cloudera/parcels/spark-1.6.3-bin-hadoop2.6/lib/spark-assembl
Spark on Yarn客户端作业提交过程分析
Spark on Yarn 客户端模式作业提交过程分析 我们将以一个Spark Streaming为例,阅读spark相关源码,简述Spark on Yarn客户端模式下作业提交流程。作业是通过spark-submit脚本提交的,因此整个流程从spark-submit代码开始分析。通过submit获取提交代码的MainClass 通过反射机制Utils.classForName创建相关的类,并获取其
SpringBoot项目通过httpClient调用SparkRestfulAPI提交spark作业到spark集群运行
package com.rlt.services.impl; import com.alibaba.fastjson.JSON; import com.rlt.entity.SparkConfEntity; import com.rlt.entity.SparkResultEntity; import com.rlt.services.DictService; import com.rlt.u...
Spark集群Job,Task 的具体运行原理
一:Spark集群部署 二:Job提交解密 三:Job生成和接受 四:Task的运行 五:再论shuffle1,从spark Runtime 的角度讲来讲有5大核心对象:Master , Worker , Executor ,Driver , CoarseGrainedExecutorbacked ;2,Spark 在做分布式集群系统的设计的时候,最大化功能的独立,模块化封装具体的独立的对象
SparkSubmit.main()方法提交外部参数,远程提交standalone集群任务
一、官方文档描述 二、引入pom【注意版本问题】  <dependency>            <groupId>org.apache.spark</groupId>            <artifactId>spark-core_2.11</artifactId>            <version>2....
一 spark on yarn cluster模式提交作业,一直处于ACCEPTED状态,改了Client模式后就正常了
1. 提交spark作业到yarn,采用client模式的时候作业可以运行,但是采用cluster模式的时候作业会一直初一accept状态。 背景:这个测试环境的资源比较小,提交作业后一直处于accept状态,所以把作业的配置也设置的小。 submit 语句: spark-submit \ spark-submit \ --class a.kafka_streaming.KafkaConsu...
spark 提交任务的时候指定名字
https://www.iteblog.com/archives/1140 https://my.oschina.net/cjun/blog/509247 --name 'My App'
使用Crontab定时执行Spark任务
今天的主要内容有: Linux下使用定时器crontab Linux下如何编写Perl脚本 在Java程序中调用Linux命令 实例:每天0点30分执行Spark任务 1. Linux下使用定时器crontab1、安装yum -y install vixie-cron yum -y install crontabs2、启停命令service crond start
Spark 作业监控
北风网spark学习笔记 对于Spark作业的监控,Spark给我们提供了很多种方式:Spark Web UI,Spark History Web UI,RESTFUL API以及Metrics。 SparkWebUI以及监控实验 每提交一个Spark作业,并且启动SparkContext之后,都会启动一个对应的Spark Web UI服务。默认情况下Spark Web UI的访问地址是driv...
spark 提交参数设置
1.num-executors 50~100 2.executor-memory 4G~8G  num-executors乘以executor-memory,就代表了你的Spark作业申请到的总内存量,这个量是不能超过队列的最大内存量的 3.executor-cores 2~4    4.spark.default.parallelism  用于设置每个stage的默认task数量,Spar
如何限制Spark作业失败的重试次数?
前言 最近有个spark程序因为资源不足以及其他原因会在第一次提交时候失败,然后又会不断提交,导致过多的系统资源被无效占用。因此想限制Spark作业失败的重试次数,如果第一次失败,就让作业直接失败,那么该具体该如何实现呢? 解决方法 首先查看了spark的属性配置,发现我们使用spark.yarn.maxAppAttempts属性在提交程序时限制其重试次数,如: spark-submit --co...
spark 集群运行python作业
spark集群运行python作业,pyspark
zookeeper实现spark高可用
一 安装zookeeper 1.环境:hadoop+spark详情参考如下地址 https://blog.csdn.net/qq_36434219/article/details/80716189 2.下载zookeeper-3.4.10.tar.gz包,jdk1.8 3.解压(本人特意建了一个用户) 4.创建data和logs目录 5.修改配置文件(可以先配置hosts文件,...
Java Web提交任务到Spark
1. windows简单java程序调用Spark,执行Scala开发的Spark程序,这里包含两种模式: 1> 提交任务到Spark集群,使用standAlone模式执行; 2> 提交任务到Yarn集群,使用yarn-client的模式; 2. windows 开发java web程序调用Spark,执行Scala开发的Spark程序,同样包含两种模式,参考1. 3. linux运行java web程序调用Spark,执行Scala开发的Spark程序,包含两种模式,参考1.