说明:此文针对需要用hive来查询长时间数据的人员,而且是需要按照天来输出查询数据,考虑到如果查询多天的,数据量过大会造成集群拥堵,所以按天输出,最终再做汇总。
需求来源:如果你每天接触的都是日志类数据,日志每天的产生量都非常庞大,而你想对过去几个月的数据进行分析,就需要考虑如何有效的实现这种方式。
假设想查询8月-10月的流量数据,可以这样:
#!/usr/bin/env python
# -*- coding: UTF-8 -*-
import sys
import os
import re
#假设hive数据文件以日期为分区。
for i in range(0,92):
if i<31:
date=20160801+i
elif i<61:
date=20160901+i-31
else:
date=20161001+i-61
#输出数据到以.data结尾的数据文件中,此处用了hive -e的用法
sql = "hive -e \"hive sql执行脚本,日期分区用%d参数代替,假设有一处用到;\" >%d.data" % (date,date)
print sql
os.system(sql)
以上脚本测试成功后,可以让linux环境下自动执行,假设上述脚本为test.py具体操作如下:
nohup python test.py & ---已经自动执行
自动执行时会生成执行文件nohup.out,可以查看文件是否执行成功或者执行到什么地步,cat nohup.out
退出shell环境时,不要像平常一样直接简单粗暴右上角点叉叉,用exit,我们这次温柔一点。
所有分区执行完毕后,可以用cat *.data >hahaha.data将所有数据汇总到hahaha.data的文件中。然后sz hahaha.data就可以把数据下载到本地进行分析啦。