生产环境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(默认情况下))

生产环境中的 Hive 与 Spark

实用Tips:计算MD5值的几个方法

Spark SQL CTE在查询中忽略命名空间

Spark Streaming性能优化: 如何在生产环境下应对流数据峰值巨变