apache-spark - Spark MySQL JDBC挂起没有错误
问题描述
我有一个简单的应用程序将 MySQL 表摄取到在 Spark 3.0.0 (EMR 6.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 作业会卡在 RUNNING 中并且不会触发任何错误。stderr 和 stdout 日志没有显示任何进展,并且执行程序完全健康。
dag 很简单:
在 MYSQL (Aurora RDS) 中,查询似乎已完成,但连接仍处于打开状态,同时检查线程状态时显示“已清理”。
我尝试过使用 MySQL 连接器版本 5 和 8,但它们都表现出相同的行为。我想这可能与 Spark 默认超时配置有关,但我想获得一些指导。
这是单个执行器的线程转储:
解决方案
推荐阅读
- razor-pages - 更新剃须刀页面中的相关数据
- java - 如何在java中使用多个不同类型的扫描仪?
- laravel - 使用 Laravel 进行动态数据库连接
- vb.net - 当用户在 Datagridview 中删除行时如何从持久存储中删除记录
- php - 在 Laravel 5.7 上使用 Intervention\Image 后的所有 Ajax 请求 419
- ansible - 如何使用 Ansible 追加文件
- string - 如何遍历目录并跳过包含特定字符串的文件夹?
- django - 使用基于类的视图具有类别 slug 和 Post slug 的 URL
- javascript - 如何使用javascript动态/内部对齐某些特定的HTML数据
- php - 带有私有 RSA 密钥的 phpseclib 2.0.12 SFTP 登录失败