详情页标题前

阿里云云原生大数据计算服务 MaxCompute参考:渐进式计算-云淘科技

详情页1

渐进式计算(Progressive Computing)是处于传统的流计算和批处理之间的一种计算方式,具有高资源利用率和低延迟的优势。本文为您介绍渐进式计算的基础配置作业调优配置以及使用示例。

背景信息

渐进式计算能够处理增量数据并维护中间结果数据,提高了在计算资源消耗、执行时间调度、查询延迟、数据处理粒度等方面的灵活性。例如在范围查询(Range Query)场景下(即查询一段时间范围内的数据),使用传统批处理方式和渐进式计算方式每次统计过去一周的产品总销量,渐进式计算方式除首次执行外,其余每次执行的计算量减少了70%。如下所示:

  • 传统批处理方式:第n(n>=7)执行需要处理[n-6,n]区间的数据;第n+1天执行需要处理[n-5,n+1]区间的数据。可以看出,第n+1天执行过程中有6天的数据是被重复计算的。如下图所示:阿里云云原生大数据计算服务 MaxCompute参考:渐进式计算-云淘科技
  • 渐进式计算方式:第n(n>=7)天执行需要处理[n-6,n]区间的数据;第n+1天执行需要处理[n,n+1]区间的数据。即第n+1天执行只需要处理当天的增量数据,再和之前6天计算好的数据整合后得到过去一周的结果。第n+1天执行时的数据不会被重复计算,因此计算量减少了70%。说明
    • 由于范围查询场景在第一次使用渐进式计算时,需要计算出每一天的中间结果,因此部分作业的运行时间会比普通模式还要长,建议用户先手动在渐进式计算模式下运行一次,以免在基线时段第一次运行影响结果产出时间。
    • 由于渐进式计算会存储每天的中间结果,因此会占用额外的存储空间,中间结果会在不再会被使用的时候自动回收。额外空间开销成本和运行开销成本相比,总体上渐进式计算仍然会节省费用,运行速度更快。

渐进式计算基础配置

第一次开启渐进式计算时,建议先在开发环境进行测试,确保性能达到预期效果后再在生产环境启用。请您按如下步骤配置渐进式计算:

  1. 在提交作业时配置渐进式计算。
    • 配置格式:
      set odps.progressive.enable=[true|false];
    • 参数说明:
      • true:表示使用渐进式计算方式处理提交的作业。
      • false:默认值为false。关闭渐进式计算方式。
  2. 配置渐进式计算模式:
    • 配置格式:
      set odps.progressive.range.query.input.partition.pattern=;
    • 参数说明:pattern_value的值以及含义如下:
      • PASS_BY_HOUR:输入数据为多个小时或分钟且非递增。适用于查询最近5分钟或最近3小时的数据。
      • PASS_BY_HOUR_AND_DAY:输入数据为多天,最近时间范围内的分区按小时分区存储。适用于查询最近3小时或最近3天的数据。
      • PASS_BY_DAY:输入数据为多天且非递增。适用于查询最近3天的数据。
      • INCREASING:输入数据为多天且递增,最近时间范围内的一个分区按天分区存储。适用于查询最近50天或最近3年的数据。
      • INCREASING_IN_A_MONTH:输入数据为本月所有数据。适用于计算从当前月一日开始到当前的作业。
      • INCREASING_IN_A_YEAR:输入数据为本年所有数据。适用于计算从当前年一月一日开始到当前的作业。
  3. (可选)如果渐进式计算模式为PASS_BY_HOUR时,您需根据实际作业周期长短,配置更细粒度时间列名。如果渐进式计算为其他模式,则不需要配置。
    • 配置格式
      • 格式一:
        set odps.progressive.range.query.time.partition.col.names=default:::|::|...;
      • 格式二:
        set odps.progressive.range.query.time.partition.col.names=:::|::|...;
      • 格式三:
        set odps.progressive.range.query.time.partition.col.names=default:
      • ::,
        :::,...;
      • 参数说明:
        • default:关键字。默认搜索符合条件的全部表。
        • table_name:指定查询对应时间列的表名。可以同时指定多张表,例如set odps.progressive.range.query.time.partition.col.names=table_1:day:hour,table_2:hour:minute;
      • :

        :

        :指定查询对应表的时间列。可以同时指定多个列,例如set odps.progressive.range.query.time.partition.col.names=table_1:day:hour|day:hour2,table_2:day:hour:minute|day:hour2;
      • 配置示例:运行频率为1小时的作业,渐进式计算配置示例如下:
        1. 配置渐进式计算模式的基础单位为1小时。
          set odps.progressive.range.query.input.partition.pattern=PASS_BY_HOUR:1;
        2. 配置更细粒度的时间列。
          set odps.progressive.range.query.time.partition.col.names=default:ds:hh|dt:hour;
      • 渐进式计算调优配置

        • 强制设置中间表存储方式为cluster table。渐近式计算过程中如果生成中间表,在读取中间表数据后会将数据重新组合(shuffle)。如果将中间表存储方式设置为cluster table,计算性能会显著提高。
          • 配置格式:
            set range.query.force.cluster.table=[true|false];
          • 参数说明:
            • true:强制设置中间表存储方式为cluster table。
            • false:默认为false。系统会根据是否有shuffle操作,自动选择不同的存储方式。说明 建议您强制设置为cluster table存储方式。
        • 设置作业并发运行实例数。渐进式计算初次执行时需要刷新涉及渐进式计算周期范围内的历史数据,此时会同时运行很多子任务。为了避免资源被全部占用,导致其它作业不能正确运行,建议您设置作业并发运行的最大实例数。
          • 配置格式:
            set odps.progressive.combine.exec.time.limit.num=;
          • 参数说明:number:默认值为15。作业并发运行的最大实例数>=1;说明 请您根据实际作业运行情况设置作业并发运行的最大实例数,实例数设置过大或者过小均会影响实际运行效率。

        渐进式计算使用示例

        1. 第一天新建作业使用渐进式计算方式查询时间列范围为[20200801,20200807]的数据,并设置渐进式计算模式为天。作业脚本如下所示:
          set odps.progressive.enable=true;
          set odps.progressive.range.query.input.partition.pattern=PASS_BY_DAY;
          
          CREATE TABLE adl_aegis_webshell_test_neoke AS
          SELECT
          request_datetime,host,uri,src_ip,src_port,dst_ip,dst_port,method,post_data,user_agent,ret_code,cookie,
          referer,x_forward_for,rsp_content_type,rqs_content_type,content_length,jump_location,set_cookie,ttl,
          get_bigwebshell_uri(uri) AS nopar_uri,internet_ip
          FROM secbase.adl_aegis_webshell_newadd_beaverlog
          WHERE ds >= to_char(dateadd(to_date('20200807','yyyymmdd'),-6,'dd') ,'yyyymmdd')
          AND ds <= '20200807';
        2. 第二天(第二次)查询

          第一天执行作业脚本后,系统会根据每一个分区的数据进行计算,并将计算结果以天为单位保存到7个中间表中。在第二天查询时间列范围为[20200802,20200808]的数据时,首先会单独计算20200808列的数据,再和第一次运行生成7个中间表的数据整合起来得到最终结果。

        内容没看懂? 不太想学习?想快速解决? 有偿解决: 联系专家

        阿里云企业补贴进行中: 马上申请

        腾讯云限时活动1折起,即将结束: 马上收藏

        同尘科技为腾讯云授权服务中心。

        购买腾讯云产品享受折上折,更有现金返利:同意关联,立享优惠

        转转请注明出处:https://www.yunxiaoer.com/160031.html

        (0)
        上一篇 2023年12月10日 上午2:06
        下一篇 2023年12月10日
        详情页2

        相关推荐

        • 阿里云RDS数据库功能概览-云淘科技

          本文介绍RDS PostgreSQL各版本支持的功能,便于您根据自身需要选购实例或查询已购实例的功能。 在售版本功能概览 功能 PostgreSQL 16 PostgreSQL 15、14 PostgreSQL 13 PostgreSQL 12、11 高可用系列 基础系列 高可用系列 基础系列 高可用系列 基础系列 高可用系列 基础系列 包年包月/按量付费 …

          阿里云数据库 2023年12月9日
        • 阿里云日志服务SLS通过函数计算消费日志数据-云淘科技

          依托阿里云函数计算服务,日志服务提供流式数据加工服务。您可以通过配置一个函数计算触发器任务,定时获取更新的数据并触发函数的执行,进而增量消费日志服务Logstore的数据,并完成自定义加工任务。日志服务提供的函数模板或者用户自定义函数均可作为数据加工函数。 前提条件 已为日志服务触发函数执行授权。更多信息,请参见云资源访问授权。 已创建Project和Log…

          2023年12月10日
        • 阿里云云原生大数据计算服务 MaxCompute按量付费闲时版-云淘科技

          MaxCompute提供单价更低的按量付费计算资源规格类型(按量付费闲时版),为您降低在延迟不敏感场景下使用MaxCompute的成本。本文为您介绍MaxCompute按量付费闲时版的应用场景、资源说明和计费说明,并帮助您了解注意事项和使用方法。 应用场景 按量付费闲时版适用于期望极低成本、但对完成时间不敏感的作业。例如用户行为日志、系统日志等低价值、海量数…

        • 信息流广告,信息流部分建议宽度830px,只针对默认列表样式,顺序随机
        • 阿里云RDS数据库UpgradeDBInstanceMajorVersion – 升级RDS PostgreSQL数据库大版本-云淘科技

          该接口用于发起RDS PostgreSQL实例大版本升级任务。 接口说明 适用引擎 RDS PostgreSQL 相关功能文档 该API操作涉及费用,请仔细阅读相关功能文档,确保完全了解使用接口产生的费用、前提条件及使用后造成的影响后,再进行操作。 RDS PostgreSQL升级数据库大版本 调试 您可以在OpenAPI Explorer中直接运行该接口,…

          阿里云数据库 2023年12月9日
        • 阿里云人工智能平台PAIMTable聚合-云淘科技

          该组件将Table按照分组列聚合成MTable。 使用限制 支持的计算引擎为MaxCompute和Flink。 可视化配置组件参数 输入桩 输入桩(从左到右) 数据类型 建议上游组件 是否必选 数据 无 读数据表 特征工程 数据预处理 是 组件参数 页签 参数 描述 字段设置 选择的列名 计算列对应的列名列表。 分组列名数组 分组列名,多列,可选,默认不选,…

          阿里云人工智能平台PAI 2023年12月10日

        联系我们

        400-800-8888

        在线咨询: QQ交谈

        邮件:admin@example.com

        工作时间:周一至周五,9:30-18:30,节假日休息

        关注微信
        本站为广大会员提供阿里云、腾讯云、华为云、百度云等一线大厂的购买,续费优惠,保证底价,买贵退差。