kylin客户端(python编写)不能按照预期的segment进行rebuild
kylin_client_tool 提供了对cube进行BUILD,REBUILD,MERGE功能,其中REBUILD却不能达到预期的效果按照指定的segment执行。
场景:
当我在kylin web页面对cube进行两次构建(分别是2000-01-01——2017-12-01, 2017-12-01——2017-12-02),我要对第二个段进行重构,执行python kylin_client_tool.py -P project_name -M REBUILD -C cube_name -T 2017-12-01 -E 2017-12-02,并没有按照预想的结果只对segment:2017-12-01——2017-12-02重构,反而对段2000-01-01——2017-12-01, 2017-12-01——2017-12-02都进行了重构,这里源代码有个bug,稍微做下修改即可。
解决方案:
需要修改的源代码:kylin_client_tool/scheduler/workers/cube.py 第115行determine_segment_range方法
114 @staticmethod
115 def determine_segment_range(segments, dt_start, dt_end):
116 pointer_dt_start = (int(time.mktime(parser.parse(dt_start).timetuple())) - time.timezone) * 1000
117 pointer_dt_end = (int(time.mktime(parser.parse(dt_end).timetuple())) - time.timezone) * 1000
118
119 if(pointer_dt_start > pointer_dt_end):
120 raise Exception("Start date (%s) is older than end date (%s)!" % (str(pointer_dt_start), str(pointer_dt_end)))
121
122 segments_to_refresh = []
123 for segment in segments:
124 if((pointer_dt_start <= segment.date_range_start and segment.date_range_end <= pointer_dt_end) or # |..| \
125 (segment.date_range_start <= pointer_dt_start and pointer_dt_start <= segment.date_range_end) or # .|.| \
126 (pointer_dt_end <= segment.date_range_start and segment.date_range_end <= pointer_dt_end) ): # |.|.
127 segments_to_refresh.append(segment)
138 return sorted(segments_to_refresh, key = lambda x: x.date_range_start)
去掉124-127行,for循环里换成下面两行代码:
segment.date_range_start = pointer_dt_start
segment.date_range_end = pointer_dt_end
kylin客户端(python编写)不能按照预期的segment进行rebuild的更多相关文章
- Python编写的ssh客户端[类似putty]
转载请注明出处:http://blog.csdn.net/jmppok/article/details/17588381 windows下可以通过putty以ssh方式连接linux主机.但putty ...
- 【转载】Python编写简易木马程序
转载来自: http://drops.wooyun.org/papers/4751?utm_source=tuicool 使用Python编写一个具有键盘记录.截屏以及通信功能的简易木马. 首先准备好 ...
- python编写网络抓包分析脚本
python编写网络抓包分析脚本 写网络抓包分析脚本,一个称手的sniffer工具是必不可少的,我习惯用Ethereal,简单,易用,基于winpcap的一个开源的软件 Ethereal自带许多协议的 ...
- 【转】使用python编写网络通信程序
文章主体现部分来自:http://openexperience.iteye.com/blog/145701 1. 背景知识 如果使用TCP协议来传递数据,客户端和服务器端需要分别经过以下步骤: ser ...
- Python编写Appium测试用例(1)
有段时间没有使用python编写测试用例了,很长时间以来,感觉appium这个测试工具确实不错,今天又重新拿起来,分享一下自己学习的一些用例,欢迎大家一起交流.学习! 1.登录客户端 #coding= ...
- Python编写简易木马程序(转载乌云)
Python编写简易木马程序 light · 2015/01/26 10:07 0x00 准备 文章内容仅供学习研究.切勿用于非法用途! 这次我们使用Python编写一个具有键盘记录.截屏以及通信功能 ...
- 基于python编写的天气抓取程序
以前一直使用中国天气网的天气预报组件都挺好,可是自从他们升级组件后数据加载变得非常不稳定,因为JS的阻塞常常导致网站打开速度很慢.为了解决这个问题决定现学现用python编写一个抓取程序,每天定时抓取 ...
- 用Python编写博客导出工具
用Python编写博客导出工具 罗朝辉 (http://kesalin.github.io/) CC 许可,转载请注明出处 写在前面的话 我在 github 上用 octopress 搭建了个人博 ...
- 用Python编写的第一个回测程序
用Python编写的第一个回测程序 2016-08-06 def savfig(figureObj, fn_prefix1='backtest8', fn_prefix2='_1_'): import ...
随机推荐
- 如何在Gulp中提高Browserify的打包速度
使用Browserify打包js时如果项目变得越来越大,编译时间就会相应变得越来越长.使用官方的插件watchify是个比较有效的提高速度方案. 提速原理 watchify的用法和gulp的watch ...
- (转)spring aop
工作忙,时间紧,不过事情再多,学习是必须的.记得以前的部门老大说过:“开发人员不可能一天到晚只有工作,肯定是需要自我学习.第一:为了更充实自己,保持进步状态.第二:为了提升技术,提高开发能力.第三:保 ...
- websocket简介
在我们做web项目的过程中,经常需要做的一个模块是消息模块.典型的场景:一个商城系统的后台管理,我想实现如果前台有客户下单,后台就会接到消息,以便尽快发货处理. 要实现上述的功能,我们有几种备选的方案 ...
- Django的缓存机制
由于Django是动态网站,所有每次请求均会去数据进行相应的操作,当程序访问量大时,耗时必然会更加明显,最简单解决方式是使用:缓存,缓存将一个某个views的返回值保存至内存或者memcache中,5 ...
- CrawlSpiders
1.用 scrapy 新建一个 tencent 项目 2.在 items.py 中确定要爬去的内容 # -*- coding: utf-8 -*- # Define here the models f ...
- KendoUI 基础:Grid 绑定template展示
Grid 绑定template展示 <div id="TodayEditorGrid" style="margin:0 10px"></div ...
- SVN 安装与使用教程总结
转载:http://www.cnblogs.com/armyfai/p/3985660.html SVN简介: 为什么要使用SVN? 程序员在编写程序的过程中,每个程序员都会生成很多不同的版本,这就需 ...
- 微信小程序教学第三章(含视频):小程序中级实战教程:列表-页面逻辑处理
§ 页面逻辑处理 本文配套视频地址: https://v.qq.com/x/page/n0554dndrez.html 开始前请把 ch3-2 分支中的 code/ 目录导入微信开发工具 修改 ind ...
- IOS学习1——IOS应用程序的生命周期及基本架构
一.应用程序的状态和多任务 有时系统会从app一种状态切换另一种状态来响应系统发生的事件.例如,当用户按下home键.电话打入.或其他中断发生时,当前运行的应用程序会切换状态来响应.应用程序的状态有以 ...
- ABP前端使用阿里云angular2 UI框架NG-ZORRO分享
一.前言 前段时间写博客分享和介绍了阿里云的UI框架NG-ZORRO(博客请查看:http://www.cnblogs.com/donaldtdz/p/7892960.html),结合近段时间对.Ne ...