Spark常见问题解决办法

以下是在学习和使用spark过程中遇到的一些问题,记录下来。

1、首先来说说spark任务运行完后查错最常用的一个命令,那就是把任务运行日志down下来。 程序存在错误,将日志down下来查看具体原因!down日志命令:yarn logs -applicationId app_id

2、Spark性能优化的9大问题及其解决方案

Spark程序优化所需要关注的几个关键点——最主要的是数据序列化和内存优化

问题1:reduce task数目不合适

解决方法:需根据实际情况调节默认配置,调整方式是修改参数spark.default.parallelism。通常,reduce数目设置为core数目的2到3倍。数量太大,造成很多小任务,增加启动任务的开销;数目太少,任务运行缓慢。

问题2:shuffle磁盘IO时间长

解决方法:设置spark.local.dir为多个磁盘,并设置磁盘为IO速度快的磁盘,通过增加IO来优化shuffle性能;

问题3:map|reduce数量大,造成shuffle小文件数目多

解决方法:默认情况下shuffle文件数目为map tasks * reduce tasks. 通过设置spark.shuffle.consolidateFiles为true,来合并shuffle中间文件,此时文件数为reduce tasks数目;

问题4:序列化时间长、结果大

解决方法:Spark默认使.用JDK.自带的ObjectOutputStream,这种方式产生的结果大、CPU处理时间长,可以通过设置spark.serializer为org.apache.spark.serializer.KryoSerializer。另外如果结果已经很大,可以使用广播变量;

问题5:单条记录消耗大

解决方法:使用mapPartition替换map,mapPartition是对每个Partition进行计算,而map是对partition中的每条记录进行计算;

问题6:collect输出大量结果时速度慢

解决方式:collect源码中是把所有的结果以一个Array的方式放在内存中,可以直接输出到分布式?文件系统,然后查看文件系统中的内容;

问题7:任务执行速度倾斜

解决方式:如果是数据倾斜,一般是partition key取的不好,可以考虑其它的并行处理方式 ,并在中间加上aggregation操作;如果是Worker倾斜,例如在某些worker上的executor执行缓慢,可以通过设置spark.speculation=true 把那些持续慢的节点去掉;

问题8:通过多步骤的RDD操作后有很多空任务或者小任务产生

解决方式:使用coalesce或repartition去减少RDD中partition数量;

问题9:Spark Streaming吞吐量不高

解决方式:可以设置spark.streaming.concurrentJobs

3、intellij idea直接编译spark源码及问题解决:

http://blog.csdn.net/tanglizhe1105/article/details/50530104

http://stackoverflow.com/questions/18920334/output-path-is-shared-between-the-same-module-error

Spark编译:clean package -Dmaven.test.skip=true

参数:-Xmx2g -XX:MaxPermSize=512M -XX:ReservedCodeCacheSize=512m

4、import Spark source code into intellj, build Error:

not found: type SparkFlumeProtocol and EventBatch

http://stackoverflow.com/questions/33311794/import-spark-source-code-into-intellj-build-error-not-found-type-sparkflumepr

<ignore_js_op>

spark_complie_config.png

5、org.apache.spark.SparkException: Exception thrown in awaitResult

set "spark.sql.broadcastTimeout" to increase the timeout

6、Apache Zeppelin编译安装:

Apache Zeppelin installation grunt build error:

解决方案:进入web模块npm install;

http://stackoverflow.com/questions/33352309/apache-zeppelin-installation-grunt-build-error?rq=1

7、Spark源码编译遇到的问题解决:http://www.tuicool.com/articles/NBVvai

内存不够,这个错误是因为编译的时候内存不够导致的,可以在编译的时候加大内存。

[ERROR] PermGen space -> [Help 1]

[ERROR]

[ERROR] To see the full stack trace of the errors,re-run Maven with the -e switch.

[ERROR] Re-run Maven using the -X switch to enable full debug logging.

[ERROR]

[ERROR] For more information about the errors and possible solutions,

please read the following articles:

[ERROR] [Help 1]http://cwiki.apache.org/confluence/display/MAVEN/OutOfMemoryError

export MAVEN_OPTS="-Xmx2g -XX:MaxPermSize=512M -XX:ReservedCodeCacheSize=512m"

8、Exception in thread "main" java.lang.UnsatisfiedLinkError: no jnind4j in java.library.path

解决方案:I’m using a 64-Bit Java on Windows and still get the no jnind4j in java.library.path error It may be that you have incompatible DLLs on your PATH. In order to tell DL4J to ignore those you have to add the following as a VM parameter (Run -> Edit Configurations -> VM Options in IntelliJ): -Djava.library.path=""

9、spark2.0本地运行源码报错解决办法:

修改对应pom中的依赖jar包,将scope级别由provided改为compile

运行类之前,去掉make选项;在运行vm设置中增加-Dspark.master=local

Win7下运行spark example代码报错:

java.lang.IllegalArgumentException: java.net.URISyntaxException: Relative path in absolute URI: file:/SourceCode/spark-2.0.0/spark-warehouse修改SQLConf类中WAREHOUSE_PATH变量,将file:前缀改为file:/或file:///

createWithDefault("file:/${system:user.dir}/spark-warehouse")

local模式运行:-Dspark.master=local

10、解决Task not serializable Exception错误

方法1:将RDD中的所有数据通过JDBC连接写入数据库,若使用map函数,可能要为每个元素都创建connection,这样开销很大,如果使用mapPartitions,那么只需要针对每个分区建立connection;mapPartitions处理后返回的是Iterator。

方法2:对未序列化的对象加@transisent引用,在进行网络通信时不对对象中的属性进行序列化

11、这个函数在func("11")调用时候正常,但是在执行func(11)或func(1.1)时候就会报error: type mismatch的错误. 这个问题很好解决

针对特定的参数类型, 重载多个func函数,这个不难, 传统JAVA中的思路, 但是需要定义多个函数

使用超类型, 比如使用AnyVal,Any;这样的话比较麻烦,需要在函数中针对特定的逻辑做类型转化,从而进一步处理上面两个方法使用的是传统JAVA思路,虽然都可以解决该问题,但是缺点是不够简洁;在充满了语法糖的Scala中,针对类型转换提供了特有的implicit隐式转化的功能;

12、org.apache.spark.shuffle.MetadataFetchFailedException: Missing an output location for shuffle

解决方案:这种问题一般发生在有大量shuffle操作的时候,task不断的failed,然后又重执行,一直循环下去,直到application失败。一般遇到这种问题提高executor内存即可,同时增加每个executor的cpu,这样不会减少task并行度。

13、Spark ML PipeLine GBT/RF预测时报错,java.util.NoSuchElementException: key not found: 8.0

错误原因:由于GBT/RF模型输入setFeaturesCol,setLabelCol参数列名不一致导致。

解决方案:只保存训练算法模型,不保存PipeLineModel

14、linux删除乱码文件,step1. ls -la; step2. find . -inum inode num -exec rm {} -rf \;

15、Caused by: java.lang.RuntimeException: Failed to commit task Caused by: org.apache.spark.executor.CommitDeniedException: attempt_201603251514_0218_m_000245_0: Not committed because the driver did not authorize commit

如果你比较了解spark中的stage是如何划分的,这个问题就比较简单了。一个Stage中包含的task过大,一般由于你的transform过程太长,因此driver给executor分发的task就会变的很大。所以解决这个问题我们可以通过拆分stage解决。也就是在执行过程中调用cache.count缓存一些中间数据从而切断过长的stage。

原文地址:http://www.kekeyun.com/thread-3382-1-1.html

转载于:https://www.cnblogs.com/kxgdby/p/7956693.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/393622.shtml

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

相关文章

autosar工具链_Autosar开发与手写代码开发的区别

Autosar开发流程1.BSW开发主要应用工具链&#xff08;Vector等工具&#xff0c;具体可以百度搜索Autosar配置工具&#xff09;来配置&#xff0c;复杂驱动的代码需要手写&#xff0c;但是也要符合Autosar的接口标准&#xff0c;主要包括&#xff0c;CAN通信配置、数字输入配置、…

山东计算机类好的民办大学,2021年山东所有民办大学名单及排名(教育部)

高考考上一个好的大学&#xff0c;是每位考生和家长的一个梦想,但是选择一个适合自己的大学也非常重要。本文高考助手网帮各位考生整理了关于山东本地区所有的民办大学名单、山东所有的民办大学分数线排名、山东民办大学文理科投档线等相关知识&#xff0c;各位考生在填报志愿的…

用例设计:思维导图orExcel

一、 某次紧急发版时使用思维导图来进行了用例的设计&#xff0c;很被导图多分支罗列、在单一分支上层层递进设计模式的吸引&#xff0c;最终看到由版本主题开枝散叶衍发出的结构性用例时非常开心。从此&#xff0c;几个版本的迭代都使用思维导图进行用例设计。 然而部门制度关…

class对象和class文件_Class文件格式

我们知道Java是一门跨平台的语言&#xff0c;我们编写的Java代码会被编译成中间class文件以让Java虚拟机解析运行。而Java虚拟机规范仅仅描述了抽象的Java虚拟机&#xff0c;在实现具体的Java虚拟机时&#xff0c;仅指出了设计规范。Java虚拟机的实现必须体现规范中的内容&…

构建自己的简单微服务架构(开源)

构建自己的简单微服务架构&#xff08;开源&#xff09; 原文:构建自己的简单微服务架构&#xff08;开源&#xff09;前言 本篇仅作引导&#xff0c;内容较多&#xff0c;如果阅读不方便&#xff0c;可以使用电脑打开我们的文档官网进行阅读。如下图所示&#…

[转载]Spring配置文件详解一:

2019独角兽企业重金招聘Python工程师标准>>> 原文地址&#xff1a;Spring配置文件详解一&#xff1a;<context:annotation-config/>与<context:component-scan base-package"com.xx 作者&#xff1a;爱情随遇而安 <context:annotation-config/>…

手机计算机的隐藏小技巧,涨知识!MIUI计算器原来有这么多隐藏小技巧,最后一个绝对想不到...

原标题&#xff1a;涨知识&#xff01;MIUI计算器原来有这么多隐藏小技巧&#xff0c;最后一个绝对想不到计算器除了我们需要进行日常的计算以外&#xff0c;几乎是用不到的。但是MIUI中的计算器与普通计算器可不同&#xff0c;里面的隐藏小技巧足以让你震惊到&#xff0c;那么…

Android零基础入门第83节:Activity间数据传递方法汇总

2019独角兽企业重金招聘Python工程师标准>>> 在Activity间传递的数据一般比较简单&#xff0c;但是有时候实际开发中也会传一些比较复杂的数据&#xff0c;本节一起来学习更多Activity间数据的传递。 一、常用数据类型 在前面几节我们只学习了一些常用类型的数据传递…

02-c#基础之01-基础语法(一)

1.注释符 1&#xff09;注销 2) 解释 2.C#中的3种注释符 1&#xff09;单行注释// 2)多行注释/*要注释的内容*/ 3)文档注释///多用来解释类或者方法 2.VS中的快捷键 转载于:https://www.cnblogs.com/yoyo-524/p/6502827.html

四五六年级计算机教学计划,五六年级信息技术教学计划

五六年级信息技术教学计划一、大纲对本册教材的要求作为小学阶段的信息技术课程&#xff0c;应以学生对计算机的学习心理、学习行为和学习方法为背景&#xff0c;把计算机基础知识和计算机最新应用融于一体&#xff0c;使之既体现信息技术学科的教学理论&#xff0c;又吸收现代…

阿里巴巴旗下平台口碑推出无人收银技术,改造便利店市场;重庆法院运用 AI 探索“智能判案”...

阿里巴巴旗下平台口碑推出无人收银技术&#xff0c;改造便利店市场 雷锋网消息 阿里巴巴旗下本地生活服务平台口碑今日宣布在上海新兴便利店品牌24鲜上线无人收银技术。消费者只要打开支付宝&#xff0c;扫一扫想要购买的商品的条形码&#xff0c;就可以自助提交订单完成支付。…

如何使用射手影音寻找字幕

我们以"理智与情感"Sense and Sensibility为例&#xff0c;在迅雷搜索了下载&#xff0c;结果到了99%就不动了&#xff0c;由于是字幕文件&#xff0c;不能直接把TD的后缀去掉看影片&#xff0c;但是影片已经下载完成&#xff0c;所以我们使用射手影音播放该电影。&a…

C语言第二次博客作业---分支结构

一、PTA实验作业 题目1&#xff1a;计算分段函数[2] 本题目要求计算下列分段函数f(x)的值&#xff1a; 1.实验代码 double x,result;scanf("%lf",&x);if(x>0){resultsqrt(x);}else{resultpow(x1,2)2*x1/x;}printf("f(%.2f) %.2f",x,result); 2 设计…

OSChina 周四乱弹 ——妹子喜欢的是程序员 这是标准……

2019独角兽企业重金招聘Python工程师标准>>> Osc乱弹歌单&#xff08;2017&#xff09;请戳&#xff08;这里&#xff09; 【今日歌曲】 一叶孤鸿 &#xff1a;分享Nanaka的单曲《いのちの名前&#xff08;Cover 木村弓&#xff09;》 《いのちの名前&#xff08;C…

xp系统sql服务器怎么找,SQL文件在winxp系统下怎么打开

很多用户不知道SQL文件是什么?SQL文件怎么打开?我们存储数据时候经常会遇到SQL文件&#xff0c;如果你不知道WinXP系统SQL文件是什么以及怎么打开的话&#xff0c;那就赶紧看看小编整理的以下文章内容吧!SQL文件是什么?学习编程的同学可能都知道SQL是一种高级的非过程化的编…

Silverlight 设计器加载错误

每次打开silverlight页面出如下错误 然后设计器不能将页面加载出来 最后找了蛮多资料的 感觉这个原因有可能&#xff1a;“控制面板的添加删除程序那里&#xff0c;选中Microsoft Silverlight&#xff0c;看看他的版本&#xff0c;是否与所装的SDK的版本号一致。就算两个版本号…

mysql索引优化实际例子_MySQL索引优化的实际案例分析

Order by desc/asc limit M是我在mysql sql优化中经常遇到的一种场景&#xff0c;其优化原理也非常的简单&#xff0c;就是利用索引的有序性&#xff0c;优化器沿着索引的顺序扫描&#xff0c;在扫描到符合条件的M行数据后&#xff0c;停止扫描&#xff1b;看起来非常的简单&am…

阿里云视频点播解决方案使用教程

2019独角兽企业重金招聘Python工程师标准>>> 课程介绍 视频点播&#xff08;ApsaraVideo for VoD&#xff0c;简称VoD&#xff09;是集视频音视频采集、编辑、上传、自动化转码处理、媒体资源管理、分发加速于一体的一站式音视频点播解决方案。 产品详情&#xff1a…

云服务器安装操作系统后如何连接,服务器如何安装操作系统

服务器如何安装操作系统 内容精选换一换如果您需要使用毕昇编译器&#xff0c;则需要先在服务端安装毕昇编译器。毕昇编译器基于开源LLVM开发&#xff0c;并进行了优化和改进&#xff0c;同时将flang作为默认的Fortran语言前端编译器&#xff0c;是针对鲲鹏平台的高性能编译器。…

python 0基础起步学习day2

元组&#xff1a;戴上了枷锁的列表 元组是不可改变的&#xff0c;元组是不能随意改变内部的元素的 元组和列表很像&#xff0c;它可以看成是不可修改的列表 所以创建元祖逗号是关键 因为(8,)是元组&#xff0c;这里*就不再是乘号&#xff0c;而是重复拷贝符【重复操作符】 直接…