日期处理¶
-
mooncake_utils.date.datediff(dt, base=None, unit='day')[source]¶ 用来计算分两个datetime的相差天数或者分钟数。
如果不显示的指定base,则计算与当前时间的diff
Parameters: - dt – input date
- base – 基准日期
- unit – 计算粒度,可选的有
day,hour,minute,second
-
mooncake_utils.date.gen_date_list(begin, end, join=False, exclude=[], exclude_today=True)[source]¶ 生成指定起始到结束之内的日期列表,注意同gen_date_list_by_days对比。
-
mooncake_utils.date.gen_date_list_by_days(begin=None, days=7, join=False, exclude=[])[source]¶ 生成指定的时间list
Parameters: - begin – 起始日期,默认要求datetime类型,如果是str会自动尝试解析成datetime
- days – 生成距离begin的最近几天
- join – 是否将list按照,拼接。hadoop的input目录常用
- exclude – 去除日期。 统计数据时常用,统计最近7天,不过某几天数据损坏需要去掉某几天。
>>> gen_date_list_by_days(begin ='20170620', days=3) # 今天2017-6-24 ['20170619', '20170618', '20170617']
>>> gen_date_list_by_days(begin ='20170620', days=3, exclude=['20170618']) # 今天2017-6-24 ['20170619', '20170617']
>>> gen_date_list_by_days(days=3) # 今天2017-6-24 ['20170623', '20170622', '20170621']
>>> gen_date_list_by_days(days=3, join = True) # 今天2017-6-24 '20170623,20170622,20170621'
-
mooncake_utils.date.gen_latest_date_list(begin, end, join=False, exclude=[])[source]¶ 已废弃,请用gen_date_list
-
mooncake_utils.date.gen_today(delta=1, raw=False, short=True, with_time=False, only_time=False)[source]¶ 生成当天的日期
Parameters: - delta – 时间偏移量
- raw – 如果设置为``True``,返回``datetime``类型, 否则返回``str``类型
- short – 若为True, 会返回精简时间,如20170101,否则返回2017-01-01
- with_time – 是否添加时间,否则只返回日期
- only_time – 是否只返回时间,不加日期
>>> gen_today(delta=0, with_time=True) 20170624145222 >>> gen_today(delta=0, with_time=True, short=False) 2017-06-24 15:06:12 >>> gen_today(delta=0, only_time=True, short=False) 15:06:12 >>> gen_today(delta=0, only_time=True) 150612 >>> gen_today(delta=0, with_time=False) 20170624 >>> gen_today(delta=1, with_time=False) 20170623
数据处理¶
特征抽取¶
-
class
mooncake_utils.feature.FeatureHasher(size=1000, hash_module='city', debug=False, print_collision=False, dense=False, use_col_index=False)[source]¶ 一个简易的特征抽框架
初始化特征类参数
Parameters: - size – 特征总维度,也就是哈希桶的数目.
- hash_module – 采用的哈希库,可选
city,mmh3 - debug – 打印debug信息
- print_collision – 是否打印冲突率
- dense – 是否生成稠密结果
- use_col_index – 特征采用下标还是用哈希结果
文件操作¶
Hadoop相关¶
日志辅助¶
彩色print辅助类¶
-
mooncake_utils.termcolor.colored(text, color=None, on_color=None, attrs=None)[source]¶ Colorize text.
- Available text colors:
- red, green, yellow, blue, magenta, cyan, white.
- Available text highlights:
- on_red, on_green, on_yellow, on_blue, on_magenta, on_cyan, on_white.
- Available attributes:
- bold, dark, underline, blink, reverse, concealed.
- Example:
- colored(‘Hello, World!’, ‘red’, ‘on_grey’, [‘blue’, ‘blink’]) colored(‘Hello, World!’, ‘green’)
报警模块¶
-
mooncake_utils.alert.alert(msg, mail=True, slack=True, channel='#mooncake')[source]¶ 用来发送报警,支持邮件和Slack
Parameters: - msg – 报警内容
- mail – 是否开启邮件报警
- slack – 是否开启slack报警
- channel – slack报警的接收频道
-
mooncake_utils.alert.send_slack(msg, channel='#mooncake')[source]¶ Send Message to Slack
Parameters: - msg (str.) – 报警内容.
- channel (str.) – 接收报警的频道.
Returns: bool – the return code.
Raises: AttributeError, NetworkError
-
mooncake_utils.alert.slack= <slacker.Slacker object>¶ alert module
命令行相关¶
-
class
mooncake_utils.cmd.cmd_builder(bin_base, conf, pretty=False)[source]¶ -
bin_base= None¶
-
conf= None¶
-
pool= {}¶
-
pretty= False¶
-
-
mooncake_utils.cmd.md5(path)[source]¶ 为文件生成相应的md5sum。
Parameters: path – 需要生成md5的路径,如 ./output/final.dat执行成功后产出
./output/final.dat.md5
-
mooncake_utils.cmd.run_cmd(cmd, debug=False)[source]¶ 运行一个shell命令,并且打印结果。 注意,这里是阻塞运行。
Parameters: - cmd – 需要执行的命令 如
ls -alh - debug – 如果设置True则不执行cmd,仅打印相关日志
- cmd – 需要执行的命令 如