zoukankan      html  css  js  c++  java
  • 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 

  • 相关阅读:
    python访问mysql和redis
    南昌PHP程序员的工资水平据说可达到8000了
    Android开发总是难以入门
    AppCan可以视为Rexsee的存活版
    像我这样的人搞程序开发
    PHPWind 8.7中插件金币竞价插件的漏洞
    混合式APP开发中中间件方案Rexsee
    看到一份名单发现很多公司都和自己发生了或多或少的联系
    PhpWind 8.7中禁止后台管理员随意修改会员用户名功能
    个人前途
  • 原文地址:https://www.cnblogs.com/dzqk/p/8235848.html
Copyright © 2011-2022 走看看