我使用Spark来查询Hive,然后进行转换。我的Scala应用程序创建了多个Spark应用程序只有在关闭上一个Spark App的SparkSession和Spark Context后才会创建一个新的spark应用程序。
但是,在停止sc和spark时,不能正确地破坏与Hive Metastore(Mysql)的连接。对于每一个Spark应用程序,我都可以看到大约创建了5个Mysql连接(旧连接仍处于活动状态!)。最终,Mysql在150个打开的连接后开始拒绝新连接。如何强制spark关闭Hive Metastore到Mysql的连接(在spark.stop()和sc.stop()之后)?
注意:我使用过Spark 2.1.1。我使用Spark的Thriftserver而不是HiveServer。所以,我不认为我使用过Hive Metastore服务。
答案 0 :(得分:0)
我有一个类似的问题,一个由MySQL支持的配置单元3.1.1 metastore。我正在使用wait_timeout
变量来使连接处于非活动状态超过10分钟。默认值为8小时。
https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html#sysvar_wait_timeout
这听起来不像是一个“合适的”解决方案,但是它可以使我们的系统正常运行。