spark

Spark常见问题解决办法

2016-10-09  本文已影响0人  sj_mei

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

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

2、Spark性能优化的9大问题及其解决方案<http://book.51cto.com/art/201409/453045.htm>
Spark程序优化所需要关注的几个关键点——最主要的是数据序列化和内存优化

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

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

spark_complie_config.png

5、org.apache.spark.SparkException: Exception thrown in awaitResult
set "spark.sql.broadcastTimeout" to increase the timeout

6、Apache Zeppelin编译安装:<http://www.iteblog.com/archives/1573>
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本地运行源码报错解决办法:

  1. 修改对应pom中的依赖jar包,将scope级别由provided改为compile
  2. 运行类之前,去掉make选项;在运行vm设置中增加-Dspark.master=local
  3. Win7下运行spark example代码报错:
    java.lang.IllegalArgumentException: java.net.URISyntaxException: Relative path in absolute URI: file:D:/SourceCode/spark-2.0.0/spark-warehouse修改SQLConf类中WAREHOUSE_PATH变量,将file:前缀改为file:/或file:///
    createWithDefault("file:/${system:user.dir}/spark-warehouse")
  4. 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的错误. 这个问题很好解决

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。

上一篇下一篇

猜你喜欢

热点阅读