我们的ETL管道在存储到cassandra之前使用spark结构化流来丰富传入数据(与静态数据帧连接) . 目前,查找表是csv文件(在HDFS中),它们作为数据帧加载,并在每个触发器上与每批数据连接 . 似乎查找表Dataframe在每个触发器上广播并存储在Memory store中 . 这耗尽了执行者的记忆,最终执行者面对OOM并被Mesos杀死:Log of executor

从上面的链接中可以看出,要连接的查找表数据帧被存储为广播变量,执行程序因OOM而被终止 .

以下是同时的驱动程序日志:Driver Log

以下是Spark配置:Spark Conf

在Spark结构流中加入静态数据集有没有更好的方法?或者如何在上述情况下避免执行者OOM?