我们的ETL管道在存储到cassandra之前使用spark结构化流来丰富传入数据(与静态数据帧连接)。目前,查找表是csv文件(在HDFS中),它们作为数据帧加载,并在每个触发器上与每批数据连接。 似乎查找表Dataframe在每个触发器上广播并存储在Memory store中。这耗尽了执行者的记忆,最终执行者面对OOM并被Mesos杀死:Log of executor
从上面的链接中可以看出,要连接的查找表数据帧存储为广播变量,执行程序因OOM而被终止。
以下是同时的驱动程序日志: Driver Log
以下是Spark配置: Spark Conf
在Spark结构化流媒体中加入静态数据集有没有更好的方法?或者如何在上述情况下避免执行者OOM?