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
未完待续...