python 写hive循环脚本
要一个月的数据 一次跑一周的数据 ,建表用插入数据的方法:
import os, sys
reload(sys); sys.setdefaultencoding( "utf-8" )
flag_server = int(os.popen('ifconfig | grep "inet addr:172" | wc -l').read().strip())
dir_scripts = '/app/home/zhangb/' if flag_server else '/Users/zhangb/Desktop/'
dir_data = '/app/home/zhangbo/' if flag_server else '/Users/zhangb/Desktop/'
dir_server = '/app/home/'
sys.path.append(dir_scripts) import datetime
import time
db_name = 'zhangb' def hive_day_cid(create_date,type11_duration):
#原始表geohash表关联,找到cid
# ------------------ 建立 geohash 表 -------------------- #
print "# ---------------------------------------------------------------------------------- #" start_date_str = (create_date - datetime.timedelta(days=type11_duration-1)).strftime("%Y%m%d")
end_date_str = create_date.strftime("%Y%m%d") hive_command = ( '''
hive -e " use %s;
create table if not exists hive_day_cid_provider(provider string,day int, cnt_cid bigint,dist_cid bigint ); insert into hive_day_cid_provider
select a.provider,a.day,count(a.cid) as cnt_cid,count(distinct(a.cid)) as dist_cid from
(select day,provider,token_md5 as cid from report_ods_mdp.upload_bi_type11
where day >=%s and day <= %s and length(token_md5)>0 and provider in ('gps','network','passive','none') ) a
group by a.provider,a.day ;"
''' % ( db_name,start_date_str, end_date_str) ) print hive_command
if flag_server:
os.system(hive_command)
print "\n" if __name__ == '__main__': start = time.time()
business_name = 'brand48'
# ----------------------------------------
#7号是这个周期中的最后一天,是周期结束日期
for (i,j) in [ (11,7),(11,14),(11,28),(12,5),(12,12),(12,19),(12,26)]:
# for (i, j) in [(2, 7), (2, 14), (2, 21), (2, 28)]:
create_date = datetime.date(2016,i,j)
type11_duration=7
hive_day_cid(create_date,type11_duration)
print "\r"
print '# Time: ', str(datetime.timedelta(seconds=(time.time() - start)))
print '# the end'
print '\n' #hive_imei_time_list(create_date,type11_duration)
print '# Time: ', str(datetime.timedelta(seconds=(time.time() - start))) # Beintoo_day.hive_output(create_date, cnt_duration=7)
'''
for i in range(1,30):
a=datetime.date(2016, 2, 23)
b=a+ datetime.timedelta(7*i)
print b
'''
#===跨年的时候处理方法1
'''
date_begin = datetime.date(2016,12,1)
# date_end = date_begin
date_end = datetime.date(2017,1,10)
for i in range(0,(date_end - date_begin).days+1,7):
create_date = date_begin + datetime.timedelta(days=i) print create_date #方法2
date_begin = datetime.date(2016,12,1)
# date_end = date_begin
date_end = datetime.date(2017,1,10) while date_begin <= date_end:
print date_begin
date_begin = date_begin + datetime.timedelta(days=7)
'''
python 写hive循环脚本的更多相关文章
- Python写网络后台脚本
Python写网络后台脚本. 首先安装Python3.6.5,在centos中自带的Python是2.6版本的,现在早就出现了3.6版本了况且2和3 之间的差距还是比较大的,所以我选择更新一下Pyth ...
- 用Python写的简单脚本更新本地hosts
这两天Google墙得严重,于是就产生了做个一键更新hosts的脚本的想法. 由于正在学习Python,理所当然用Python来写这个脚本了. 接触比较多的就是urllib2这个库,习惯性的impor ...
- 用Python写一个游戏脚本,你会吗?
前言本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理.作者:ivat4u 学习python有一段时间了,由于python语言的强大 ...
- python写一个DDos脚本(DOS)
前言:突然想写,然后去了解原理 DDOS原理:往指定的IP发送数据包(僵尸网络),导致服务器 拒绝服务,无法正常访问. 0x01: 要用到的模块 scapy模块 pip install scapy 或 ...
- python写一段脚本代码自动完成输入(目录下的所有)文件的数据替换(修改数据和替换数据都是输入的)【转】
转自:http://blog.csdn.net/lixiaojie1012/article/details/23628129 初次尝试python语言,感觉用着真舒服,简单明了,库函数一调用就OK了 ...
- 教你如何使用Python写游戏辅助脚本
主要实现方式是通过图片的对比,在游戏中就行点击.运行程序需要以下东西. PIL: 图片处理模块 (python3 换成了 pillow) 下载地址: https://www.lfd.uci. ...
- 用python写一个自动化盲注脚本
前言 当我们进行SQL注入攻击时,当发现无法进行union注入或者报错等注入,那么,就需要考虑盲注了,当我们进行盲注时,需要通过页面的反馈(布尔盲注)或者相应时间(时间盲注),来一个字符一个字符的进行 ...
- 用python & bat写软件安装脚本 + HM NIS Edit自动生成软件安装脚本
2019-03-11更新:原来NSIS脚本也可以禁用64位文件操作重定向的! 1.在安装脚本的开始处定义 LIBRARY_X64. !include "MUI.nsh"!inclu ...
- 一个好用的Python备份mysql的脚本
前几天打算用Python写一个mysql脚本,上Google看了下老外写的,写的挺好的,原地址在http://tecadmin.net/python-script-for-mysql-database ...
随机推荐
- tomcat和servlet的关系
一.什么是servlet? 处理请求和发送响应的过程是由一种叫做Servlet的程序来完成的,并且Servlet是为了解决实现动态页面而衍生的东西.理解这个的前提是了解一些http协议的东西,并且知道 ...
- 关于java泛型的使用方式。。。。
转自:http://onewebsql.com/blog/generics-extends-super 以下基本够用了 Today we continue our mini-series on Jav ...
- 从Exchager数据交换到基于trade-off的系统设计
可以使用JDK提供的Exchager类进行同步交换:进行数据交换的双方将互相等待对方,直到双方的数据都准备完毕,才进行交换.Exchager类很少用到,但理解数据交换的时机却十分重要,这是一个基于tr ...
- [转][Java] Date 格式化
import org.springframework.context.ApplicationContext; import org.springframework.context.support.Cl ...
- 1111 Online Map (30 分)
1111 Online Map (30 分) Input our current position and a destination, an online map can recommend sev ...
- centos自带的dvd中的官方base源,丢失了可以复制下面的内容
/etc/yum.repos.d/CentOS-Base.repo文件中的内容,同样适用于centos6 [base]name=CentOS-$releasever - Basemirrorlist= ...
- 解析Excel数据
解析Excel数据常用的方式就是使用POI和JXL工具了,这两种工具使用起来有些类似,这里记录一下使用方式提供个参考 POI使用 File file = new File(filePath); Fil ...
- 第13章 TCP编程(3)_基于自定义协议的多进程模型
5. 自定义协议编程 (1)自定义协议:MSG //自定义的协议(TLV:Type length Value) typedef struct{ //协议头部 ];//TLV中的T unsigned i ...
- CSS宽度高度的百分比取值基于谁
width=num% , height=num% 基于以下几点 1. 若元素不存在定位: 则基于直接父元素的宽高度 2. 若元素存在定位 且 定位为 relative, 则也基于直接父元素的宽高度 3 ...
- python post提交数据
使用utf8编码,value是上传的值 1.上传经纬度等数据http://112.74.44.47/VehicleWeb/Acceleration?gps=gpsValue&accelera ...