spark.yarn.executor.memoryOverhead
ExecutorLostFailure (executor 52 exited caused by one of the running tasks) Reason: Container killed by YARN for exceeding memory limits. 11.0 GB of 11 GB physical memory used. Consider boosting spark.yarn.executor.memoryOverhead.
emoryOverhead是JVM进程中除Java堆以外占用的空间大小,包括方法区(永久代)、Java虚拟机栈、本地方法栈、JVM进程本身所用的内存、直接内存(Direct Memory)等。 通过spark.yarn.executor.memoryOverhead设置,单位MB。如果Java堆或者永久代的内存不足,则会产生各种OOM异常,executor会被结束。 在Java堆以外的JVM进程内存占用较多的情况下,应该将MemoryOverhead设置为一个足够大的值,以防JVM进程因实际占用的内存超标而被kill。
spark-submit --conf spark.yarn.executor.memoryOverhead=10G
- spark里面设置
`spark.conf.set("spark.yarn.executor.memoryOverhead", "10G")
spark.sql.caseSensitive
spark在读取json时候
spark.read.json(dataPath).toDF()
会自动inferschema(推断类型),可能有些json的key写的不标准,比如同时存在Uid和uid就会解析错误。
- 在spark程序里面设置 spark.conf.set(“spark.sql.caseSensitive”, “true”)
spark.sql.shuffle.partitions
数据倾斜的时候,通过设置distribute by task numer, 重新shuffle数据均衡
- spark.conf.set(“spark.sql.shuffle.partitions”, 800)
- spark.conf.set(“spark.default.parallelism”, 800)
spark.sql.parquet.compression.codec
lzo压缩文件spark自动解压
- spark.conf.set(“spark.sql.parquet.compression.codec”, “lzo”)
设置spark.driver.extraJavaOptions -Dhdp.version
Exception in thread “main” java.lang.IllegalStateException: hdp.version is not set while running Spark under HDP
- spark.conf.set(“spark.driver.extraJavaOptions -Dhdp.version”, “3.1.0.0-78”)
- spark.conf.set(“spark.yarn.am.extraJavaOptions -Dhdp.version”, “3.1.0.0-78”)
以上均可以通过--conf
设置