广告
返回顶部
首页 > 资讯 > 精选 >使用Spark时的一些常见问题和解决办法
  • 364
分享到

使用Spark时的一些常见问题和解决办法

2023-06-02 15:06:50 364人浏览 安东尼
摘要

这篇文章主要讲解了“使用spark时的一些常见问题和解决办法”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“使用Spark时的一些常见问题和解决办法”吧!首先来说说spark任务运行完后查错最

这篇文章主要讲解了“使用spark时的一些常见问题和解决办法”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“使用Spark时的一些常见问题和解决办法”吧!

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

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

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

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

spark_complie_config.png

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

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

Apache Zeppelin编译安装:

Apache Zeppelin installation grunt build error:

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

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

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"

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=""

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使用Spark时的一些常见问题和解决办法:/SourceCode/spark-2.0.0/spark-warehouse修改SQLConf类中WAREHOUSE_PATH变量,将file:前缀改为file:/或file:///

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

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

解决Task not serializable Exception错误

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

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

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

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

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

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

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

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

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

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

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

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。

感谢各位的阅读,以上就是“使用Spark时的一些常见问题和解决办法”的内容了,经过本文的学习后,相信大家对使用Spark时的一些常见问题和解决办法这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

--结束END--

本文标题: 使用Spark时的一些常见问题和解决办法

本文链接: https://www.lsjlt.com/news/230456.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 使用Spark时的一些常见问题和解决办法
    这篇文章主要讲解了“使用Spark时的一些常见问题和解决办法”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“使用Spark时的一些常见问题和解决办法”吧!首先来说说spark任务运行完后查错最...
    99+
    2023-06-02
  • 解决python调用matlab时的一些常见问题
    为什么要用python调用matlab? 我自己的有些数据结构涉及到hash查找,在python中key是tuple形式,在matlab中支持hash查找的数据结构只有contain...
    99+
    2022-11-11
  • php使用composer常见问题及解决办法
    目录错误问题一错误问题二错误问题三错误问题四错误问题五中文镜像使用办法使用办法composer是PHP中非常优秀的一个包管理工具,可以帮助我们来管理项目所需要依赖的所有包以及插件,也...
    99+
    2022-11-12
  • @ConfigurationProperties使用时常见问题及解决方法
    这篇文章主要介绍“@ConfigurationProperties使用时常见问题及解决方法”,在日常操作中,相信很多人在@ConfigurationProperties使用时常见问题及解决方法问题上存在疑惑,小编查阅了各式资料,整理出简单好...
    99+
    2023-06-20
  • 云服务器常见故障有哪些问题和解决办法
    资源超载:当用户正在运行的云服务器资源使用量超过了其可用资源时,就会出现资源超载现象,从而导致服务器无法正常运行。 解决办法:首先,可以通过监控日志等方式来排查故障,定期清理不再使用的资源,或者采取一些优化措施,如延长可用区时间等。 ...
    99+
    2023-10-27
    解决办法 常见故障 服务器
  • Windows8中常见疑问和解决的办法
    在之前的一段时间里,我将 Win8 中比较突出的特点撰写成了几篇文章。但还有一些热点的小问题,也是很多用户曾问到或关注的,又不太适合写成一篇篇独立的文章,于是在这里,我将以问答的形式将其汇总成文,希望能够帮...
    99+
    2022-06-04
    疑问 常见 办法
  • Sql server一些常见性能问题的解决方法有哪些
    本篇内容主要讲解“Sql server一些常见性能问题的解决方法有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Sql server一些常见性能问题的解决方...
    99+
    2022-10-18
  • Word公式编辑器使用中的常见问题的解决办法
    在使用Word公式编辑器时,可能会遇到一些常见的问题。以下是一些常见问题及其解决办法:1. 公式无法正确显示或显示不完整:- 检查公...
    99+
    2023-09-16
    Word
  • 新加坡服务器使用的常见问题和解决办法是什么
    新加坡服务器使用的常见问题和解决办法是什么,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。1.新加坡服务器里的数据出现丢失的情况怎么办不管是使用新加坡服务器或者是别的服务器,企业...
    99+
    2023-06-07
  • 云服务器常见故障有哪些类型的问题和解决办法
    资源耗尽:当云服务器资源耗尽时,系统会自动关闭服务器并重启。这种故障可能导致无法正常访问服务器,或者访问受到限制。解决方法是及时备份数据并检查服务器是否超载。 服务不可用:当云服务器服务不可用时,客户无法访问服务器或者无法提供服务。这种故...
    99+
    2023-10-27
    解决办法 常见故障 类型
  • c#使用listbox的详细方法和常见问题解决
    关于ListBox ListBox是WinForm中的列表控件,它提供了一个项目列表(一组数据项),用户可以选择一个或者多个条目,当列表项目过多时,ListBox会自动添加滚动条,使...
    99+
    2022-11-12
  • JS利用循环解决的一些常见问题总结
    目录1. 打印0-100中3的倍数2. 在页面中写入 1000-2000年中的闰年3. 打印100以内所有偶数的和4.求出1-1/2+1/3-1/4……1...
    99+
    2022-11-13
  • 云服务器常见故障及解决办法有哪些问题
    首先,当服务器出现故障时,用户需要及时采取措施进行维护和修复。一般来说,当服务器出现故障时,常见的故障包括但不限于: 系统崩溃:服务器会自动重启,并发送错误报告给用户。这种情况下,用户需要检查是否有病毒或其他软件入侵服务器,或者网络连接...
    99+
    2023-10-27
    解决办法 常见故障 服务器
  • win7系统中常见的一些小问题和解决方法简单整理
    在使用电脑中难免会遇到一些小问题,而小问题如果你知道解决方法的话,那么基本上几分钟就能解决了,而如果你不知道可以要想很久或者百度很久才能找到解决方法。 一、截图花屏 这个问题主要是由于显卡驱 二、盘符错乱 盘符错乱从Wi...
    99+
    2023-06-01
    win7 常见问题 解决 问题 系统 方法
  • cocos creator 3.x遇到的一些问题和解决办法
    一、场景文件损坏问题。 现象:一次异常死机,关机重启后,场景文件(cocos creator 3.6.2创建)无法打开,涉及几天的工作,如果无法恢复,损失巨大!感觉太夸张了。 分析:认真分析了场景文件格式,是json格式(可以用visu...
    99+
    2023-09-02
    android cocos2d android studio gradle visual studio code Powered by 金山文档
  • 使用stream的Collectors.toMap()方法常见的问题及解决
    目录使用stream的Collectors.toMap()方法常见问题在使用过程中有两个小坑需要注意解决方案Stream ToMap(Collectors.toMap) 实践Requ...
    99+
    2023-03-06
    stream Collectors.toMap() Collectors.toMap()方法 使用stream Collectors.toMap()方法
  • PHP笔试中常见的问题和解决方法有哪些
    今天小编给大家分享一下PHP笔试中常见的问题和解决方法有哪些的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。语言基础在PHP的...
    99+
    2023-07-05
  • DIV CSS设计中常见问题的解决办法是什么
    这篇文章将为大家详细讲解有关DIV CSS设计中常见问题的解决办法是什么,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。作为前端开发人员,在日常的页面制作时,...
    99+
    2022-10-19
  • CSS使用中常见的问题以及解决方法
    这篇文章主要介绍“CSS使用中常见的问题以及解决方法”,在日常操作中,相信很多人在CSS使用中常见的问题以及解决方法问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”CSS使用中...
    99+
    2022-10-19
  • 使用stream的Collectors.toMap()方法常见问题如何解决
    本篇内容介绍了“使用stream的Collectors.toMap()方法常见问题如何解决”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!使用...
    99+
    2023-07-05
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作