我有一个简单的应用程序将mysql表摄取到运行在spark3.0.0(emr6.1)上的s3中。
mysql表是使用单个大执行器加载的,其内存为48g,如下所示:
spark.read \
.option("url", jdbc_url) \
.option("dbtable", query) \
.option("driver", driver_class) \
.option("user", secret['username']) \
.option("password", secret['password']) \
.format("jdbc").load()
spark作业在小型表上工作没有任何问题,mysql查询只需不到6分钟就可以完成。但是,在查询超过此时间的两个作业中,spark作业被卡在运行中,不会触发任何错误。stderr和stdout日志不显示任何进度,并且执行器完全正常。
dag非常简单:
在mysql(aurora-rds)中,查询似乎已完成,但连接仍处于打开状态,而检查线程状态时显示为“cleaned up”。
我尝试过mysql连接器版本5和8,但它们都显示出相同的行为。我想这可能与spark默认超时配置有关,但我想得到一些指导。
这是单个执行器的线程转储:
暂无答案!
目前还没有任何答案,快来回答吧!