Impalad 查询的session经常不会自动关闭,长时间占用资源,impala社区有人整理了一个Python脚本,可以定时执行去关闭超时的session:
from bs4 import BeautifulSoup
import bs4
import urllib.request
import requests
import csv
import re
def del_oov(ip):
urlpage = 'http://%s/sessions' % ip
page = urllib.request.urlopen(urlpage)
soup = BeautifulSoup(page, 'html.parser')
for tag in soup.find('table').children:
if isinstance(tag, bs4.element.Tag): # 判断子节点是否为Tag对象(因为子节点会包含如换行符之类的节点)
# html内容
if tag.name == 'tbody':
data_list = tag.get_text().split("\n")
# 每行数据的长度是17
# 打印出来获得
for i in range(0, int(len(data_list)/17)):
_list = data_list[(i)*17:(i+1)*17]
# 判断是否要关闭
if (_list[13] == 'true') and (_list[14] == 'false'):
# 发送get请求关闭
session_id = _list[7]
url = "http://%s/close_session?session_id=%s" % (
ip, session_id)
res = requests.get(url)
# print(res.text)
ip_list = ['xxx:25000','xxx:25000','xxx:25000',...]
for ip in ip_list:
del_oov(ip)