详情页标题前

阿里云日志服务SLS日志投递MaxCompute后,如何检查数据完整性-云淘科技

详情页1

日志服务数据投递MaxCompute场景下,需要在MaxCompute表分区维度上检查数据完整性,即MaxCompute表中某个分区中数据是否已经完整。

使用保留字段__partition_time__作为表分区列,如何判断分区数据是否已完整

__partition_time__由日志的time字段计算得到,由日志的真实时间按照时间格式字符串向下取整得出。其中,日志真实时间既不是投递数据的时间,也不是日志写入服务端时间。

举例:日志时间为2017-05-19 10:43:00,分区字段格式字符串配置为yyyy_MM_dd_HH_mm,每1小时投递一次。那么无论该日志是什么时刻写入服务端,这条日志会存入MaxCompute的2017_05_19_10_00分区,计算细节参考投递日志到MaxCompute(旧版)。

如果不考虑写入了历史数据等问题,在日志实时写入的情况下,有以下两种方法判断分区数据是否已完整:

  • 通过API、SDK或控制台判断(推荐)

    使用API、SDK或者控制台获取指定Project/Logstore投递任务列表。例如API返回任务列表如下。控制台会对该返回结果进行可视化展示。

    {
      "count" : 10,
      "total" : 20,
      "statistics" : {
          "running" : 0,
          "success" : 20,
          "fail" : 0 
      }
      "tasks" : [
          ...
          {
              "id" : "abcdefghijk",
              "taskStatus" : "success",
              "taskMessage" : "",
              "taskCreateTime" : 1448925013,
              "taskLastDataReceiveTime" : 1448915013,
              "taskFinishTime" : 1448926013
          },
          {
              "id" : "xfegeagege",
              "taskStatus" : "success",
              "taskMessage" : "",
              "taskCreateTime" : 1448926813,
              "taskLastDataReceiveTime" : 1448930000,
              "taskFinishTime" : 1448936910
          }
      ]
    }

    taskLastDataReceiveTime表示日志服务接收到数据的时间,根据该参数判断时间为T以前的数据是否已经全部投递到MaxCompute表。

    • 如果taskLastDataReceiveTime < T + 300s(300秒是为了容忍数据发送服务端发生错误重试)以前的每个投递任务状态都是success,说明T时刻的数据都已经入库。
    • 如果任务列表中有ready或者running状态任务,说明数据还不完整,需要等待任务执行结束。
    • 如果任务列表中有failed状态任务,请查看原因并在解决后重试任务。您可以尝试修改投递配置,以解决投递问题。
  • 通过MaxCompute分区粗略估计

    比如在MaxCompute中以半小时做一次分区,投递任务为每30分钟一次,当表中包含以下分区:

    2017_05_19_10_00
    2017_05_19_10_30

    当发现分区2017_05_19_11_00出现时,说明11:00之前分区数据已经完整。

    该方法不依赖API,判断方式简单但结果并不精确,仅用作粗略估计。

使用自定义日志字段作为表分区列,如何判断分区数据已完整

比如日志中有一个字段date,取值:20170518,20170519,在配置投递规则时将date列映射到表分区列。

这种情况下,需要考虑date字段与写入服务端时间差,结合使用保留字段方法,根据接收日志数据时间判断。

投递成功,但MaxCompute表数据有缺失,应如何解决

MaxCompute投递任务状态成功,但表中数据缺失,一般有以下原因:

  • 表分区列映射的日志服务字段的名称不存在。此时投递过去的列值为null,而MaxCompute表不允许分区列值为null。
  • 表分区列映射的日志服务字段的值包含正斜线(/)或其他特殊符号。MaxCompute将这些字符作为保留字,不允许在分区列中出现。

遇到这些情况时,投递策略为忽略异常的日志行,并继续任务,在该次任务中其它分区正确的日志行可以成功同步。

因此,在配置字段映射不当的情况下,可能出现任务成功但是表中缺少数据的情况,请修改分区列配置。建议使用保留字段__partition_time__作为分区。

更多细节请参考使用限制。

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

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

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

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

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

转转请注明出处:http://www.yunxiaoer.com/164975.html

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

相关推荐

  • 阿里云日志服务SLSPostLogStoreLogs-云淘科技

    调用PostLogStoreLogs接口向指定的Logstore中写入日志数据。 接口说明 已创建并获取AccessKey。更多信息,请参见访问密钥。 阿里云账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维。RAM用户需具备操作日志服务资源的权限。具体操作,请参见创建RAM用户及授权。 已明确您…

    阿里云日志服务SLS 2023年12月10日
  • 阿里云对象存储OSS查看选项-云淘科技

    您可以通过-h命令查看ossutil支持的所有选项。 说明 本文各命令行示例均基于Linux 64位系统,其他系统请将命令开头的./ossutil64替换成对应的Binary名称。详情请参见命令行工具ossutil快速入门。 命令格式 ./ossutil64 -h 若要查看某个命令支持哪些选项,请使用./ossutil64 help [command]命令来…

    阿里云对象存储 2023年12月10日
  • 大数据计算MaxCompute limit size这个参数是不是有地方改?-云小二-阿里云

    大数据计算MaxCompute limit size这个参数是不是有地方改? 以下为热心网友提供的参考意见 默认的没有地方修改。 ,此回答整理自钉群“MaxCompute开发者社区2群” 以下为热心网友提供的参考意见 MaxCompute的”limit size”参数可能指的是作业执行的一些限制。例如,作业生成的执行计划的大小不能超过…

    阿里云 2023年12月24日
  • 阿里云大数据开发治理平台 DataWorksGetNodeParents-云淘科技

    调用GetNodeParents获取节点上游列表。 调试 您可以在OpenAPI Explorer中直接运行该接口,免去您计算签名的困扰。运行成功后,OpenAPI Explorer可以自动生成SDK代码示例。 请求参数 名称 类型 是否必选 示例值 描述 Action String 是 GetNodeParents 系统规定参数。取值:GetNodePar…

  • 信息流广告,信息流部分建议宽度830px,只针对默认列表样式,顺序随机
  • 请问一下大数据计算MaxCompute,一张表我如果想只保留近七天的数据,应该如何设置呢?-云小二-阿里云

    请问一下大数据计算MaxCompute,一张表我如果想只保留近七天的数据,应该如何设置呢?是通过设置生命周期为7天吗? 以下为热心网友提供的参考意见 生命周期为7天是指,指表数据从最后一次更新的时间算起,在经过7没有变动,则此表将被MaxCompute自动回收。 可以表按分区存储,设置每个分区的生命周期是7天。这样就是8号的时候1号的数据到期被回收;14号的…

    阿里云 2023年12月31日

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

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

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