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 ...
随机推荐
- ajax接受json响应
一.显示页面(ajax_xml.html) body部分 <!-- 支持多选的列表框 --> <select name="first" id="firs ...
- Java二维数组的概念和使用方法
二维数组 数组的数组---二维数组的每一个元素是一个一维数组 定义格式 数据类型[][] 数组名 = new 数据类型[二维数组的长度/包含的一维数组的个数][每个一维数组的长度]; int[][] ...
- MAC系统里JDK版本切换
1.首先安装需要的JDK版本 JDK7,JDK8则需要自己到Oracle官网下载安装对应的版本.自己安装的JDK默认路径为:/Library/Java/JavaVirtualMachines/jdk1 ...
- .Net Core在X86上实现Interlocked.Increment(ref long)的方式
因为在X86上long会被分割为两个int进行操作, 那么Interlocked.Increment的实现成为了一个问题. 在一番搜索后未发现有现成的文章解释这个问题,于是我就动手分析了. 这篇是笔记 ...
- SQL 杂活
例子一:查询两个表数据并且分页展示 select * from ( select ROW_NUMBER() OVER(order by CreateTime desc) as rownum,* fro ...
- html查看器android
1.android的API提供了访问网络的一个类HttpURLConnection 2.通过发送GET请求获取服务器返回的html代码 3.先看看布局文件,如下所示, <?xml version ...
- c#扩展方法的使用
"扩展方法使您能够向现有类型"添加"方法,而无需创建新的派生类型.重新编译或以其他方式修改原始类型." 1.为什么会有扩展方法 你一定很疑问什么是扩展方法!什么 ...
- 程序员的自我救赎---10.1:APP版本控制系统
<前言> (一) Winner2.0 框架基础分析 (二)PLSQL报表系统 (三)SSO单点登录 (四) 短信中心与消息中心 (五)钱包系统 (六)GPU支付中心 (七)权限系统 (八) ...
- 网络实时流量监控工具iftop---转
网络实时流量监控工具iftop 分类: LINUX 1.安装依赖软件库 [root@localhost ~]# yum install libpcap libpcap-devel ncurses nc ...
- 【读书笔记】A Swift Tour
素材:A Swift Tour 推荐下载Playground:Download Playground objc 自己较为熟悉,想熟悉下风头正劲的 swift.就先从官方的入门手册开始撸. 每一小节,我 ...