У меня есть конвейер кода, где я использую 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)