Прекратить запись всего pyhive запроса в файл журнала - PullRequest
0 голосов
/ 18 декабря 2018

У меня есть конвейер кода, где я использую Pyhive для вставки данных в БД.

from pyhive import hive
def save_postprocess_data(postprocess_data):
    conn = hive.Connection(host="hostname", port=10000, username="username")
    curr = conn.cursor()
    insert = ""
    for i in range(postprocess_data.shape[0]):
    insert = insert + ",('%s','%d', '%d', '%s','%d','%s', '%.2f', '%s','%s','%d','%s')" % (postprocess_data.iloc[i,0],postprocess_data.iloc[i,1],postprocess_data.iloc[i,2],postprocess_data.iloc[i,3],postprocess_data.iloc[i,4],postprocess_data.iloc[i,5   ],postprocess_data.iloc[i,6],postprocess_data.iloc[i,7],postprocess_data.iloc[i,8],       postprocess_data.iloc[i,9],postprocess_data.iloc[i,10])
    insert_query = "insert into table table_name PARTITION (date) values"+ insert[1:]    
    curr.execute(insert_query)
    conn.close()
    return None

, и я получаю весь запрос, напечатанный в журнале приложения, даже не используя регистратор

12/17/2018 07:59:21 AM USE `default`
12/17/2018 11:55:03 AM USE `default`
12/17/2018 11:55:03 AM insert into table table_name PARTITION (date) values("HUGE LIST OF VALUES")

У меня есть следующая конфигурация для логгера

logging.basicConfig(filename=root_dir+'/application.log',format='%(asctime)s %(message)s', datefmt='%m/%d/%Y %I:%M:%S %p',level=logging.INFO)

Проблема в том, что у меня около 30M записей, которые нужно вставить, и логгер залит значениями из запроса.

Я бы не хотел регистрировать весь запрос и вставил только следующее

logging.info("query successfully inserted %d values into the table",no_of_records)

1 Ответ

0 голосов
/ 18 декабря 2018

мы можем установить другой уровень ведения журнала только для функций библиотеки pyhive, по умолчанию будет напечатано INFO, который является глобальным уровнем, который мы установили для средства ведения журнала.И INFO будет включать в себя запрос, и этот запрос заполняет файл журнала.

за счет установки уровня ведения журнала для библиотеки pyhive мы можем запретить регистратору печатать запрос в журнале.

logging.getLogger('pyhive').setLevel(logging.CRITICAL)

...