生产环境spark sql实用tips
Posted diyicedaan
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了生产环境spark sql实用tips相关的知识,希望对你有一定的参考价值。
1. 在数据分层的dws层中,由于指标和维度表关联较多,数据量较大,作业运行时间较慢;经过排查后发现禁用广播join 效率提升明显。
故结论1如下:
在大量数据或者在复杂的sql情况下,禁止broadcasthashjoin可以减少网络开销
spark.sql.autoBroadcastJoinThreshold =-1
2.作业中有大表关联时会出现 如下错误
org.apache.spark.shuffle.FetchFailedException: failed to allocate 16777216 byte(s) of direct memory
具体原因是
同时拉取大量的shuffle block,导致netty自己控制的内存超过限制
解决方式是增加堆内内存
增加direct momery
conf.spark.executor.extraJavaOptions -XX:MaxDirectMemorySize=4096m
未完待续...
以上是关于生产环境spark sql实用tips的主要内容,如果未能解决你的问题,请参考以下文章
Spark SQL 高级编程之 HadoopHiveSpark 环境搭建
当 shuffle 分区大于 200 时会发生啥(数据帧中的 spark.sql.shuffle.partitions 200(默认情况下))