我使用spark查询hive,然后进行转换。我的scala应用程序创建了多个spark应用程序。只有在关闭sparksession和上一个spark应用程序的spark上下文后,才能创建新的spark应用程序。
然而,在停止sc和spark时,到hivemetastore(mysql)的连接并没有被正确地破坏。对于每一个spark应用程序,我可以看到大约5个mysql连接被创建(旧的连接仍然处于活动状态!)。最终,mysql在150个打开的连接之后开始拒绝新的连接。如何强制spark关闭到mysql的hive元存储连接(在spark.stop()和sc.stop()之后)?
注意:我使用了spark 2.1.1。我正在使用spark的thriftserver而不是hiveserver。所以,我认为我没有使用Hive元存储服务。
1条答案
按热度按时间mwkjh3gx1#
我也遇到过类似的问题,一个由mysql支持的hive3.1.1元存储。我用的是
wait_timeout
变量以获取10分钟以上处于非活动状态的连接。默认值为8小时。https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html#sysvar_wait_timeout
这感觉不是一个“合适”的解决方案,但它允许我们的系统正常工作。