Как принудительно закрыть подключения метастораков Spark Hive к mysql после остановки контекста?

Я использую Spark для запросов к Hive с последующими преобразованиями. Приложение My Scala создает несколько приложений Spark. Новое приложение spark создается только после закрытия SparkSession и Spark Context предыдущего приложения Spark.

Однако при остановке sc и spark некоторые подключения к Hive Metastore (Mysql) не будут должным образом разрушены. Для каждого Spark App я вижу около 5 создаваемых Mysql-соединений (старые соединения все еще активны!). В конце концов, Mysql начинает отклонять новые подключения после 150 открытых подключений. Как я могу заставить spark закрывать соединения Hive metastore с Mysql (после spark.stop() и sc.stop())?

Примечание: я использовал Spark 2.1.1. Я использую Spark's Thriftserver вместо HiveServer. Так что я не думаю, что использовал сервис Hive Metastore.

0 ответов

У меня была аналогичная проблема с хранилищем метаданных Hive 3.1.1, поддерживаемым MySQL. Я используюwait_timeoutпеременная для получения неактивных соединений более 10 минут. По умолчанию 8 часов.

https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html

Это не кажется "правильным" решением, но позволяет нашей системе функционировать.

Другие вопросы по тегам