停止将整个pyhive查询记录到日志文件

时间:2018-12-18 10:43:18

标签: python logging pyhive

我有一个代码管道,正在使用Pyhive将数据插入数据库。

foo<int, std::vector>

而且,我什至不使用记录器就将整个查询打印在应用程序日志中

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")

问题是我有大约3000万条记录需要插入,记录器中充满了查询中的值。

我不希望记录整个查询,而只插入以下内容

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

1 个答案:

答案 0 :(得分:0)

我们可以仅针对pyhive库函数设置不同的日志记录级别 默认情况下,它将打印INFO,这是我们为记录器设置的全局级别。 INFO将包含查询,并且该查询正在泛滥日志文件。

通过设置pyhive库的日志记录级别,我们可以阻止记录器在日志中打印查询。

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