MaxCompute投递任务(新版)常见报错与问题

本文介绍MaxCompute投递任务(新版)的常见报错与问题。

出现用户不存在错误时,如何解决?

如果MaxCompute投递(新版)的执行记录中显示ODPS-0420095: Access Denied - Authorization Failed [4002], You don't exist in project ****. Context ID:11111-1111-111-1111-11111111. --->Tips: Pricipal:INVALID$v4_11111111111; You don't exist in project ****错误,表示您在添加RAM角色为MaxCompute工作空间成员时,未添加目标用户或者添加用户错误,请重新添加用户并完成授权,具体操作,请参见通过默认角色写数据到MaxCompute通过自定义RAM角色写数据到MaxCompute

出现RAM角色无权限错误时,如何解决?

如果MaxCompute投递(新版)的执行记录中显示ODPS-0420095: Access Denied - Authorization Failed [4019], You have NO privilege 'odps:Describe' on {acs:odps:*:projects/****/tables/****}. Context ID:111111-1111-11111-1111-1111111. --->Tips: Pricipal:INVALID$v4_111111111错误,表示您在添加RAM角色为MaxCompute工作空间成员时,未为RAM角色授权,请重新为RAM角色授权。具体操作,请参见通过默认角色写数据到MaxCompute通过自定义RAM角色写数据到MaxCompute

出现FAILED: mismatched input错误时,如何解决?

如果您使用RAM用户在操作添加RAM角色为MaxCompute工作空间成员时,出现FAILED: mismatched input错误,表示该RAM用户没有执行ADD USER等语句的权限。出现该错误时,您需要先使用阿里云账号或具备如下权限策略的RAM用户执行ADD USER等语句。完成此次操作后,后续您再使用RAM用户执行ADD USER等语句,不会出现该错误。

{
  "Version": "1",
  "Statement": [
    {
      "Action": "ram:CreateServiceLinkedRole",
      "Resource": "*",
      "Effect": "Allow",
      "Condition": {
        "StringEquals": {
          "ram:ServiceName": "usermgmt.odps.aliyuncs.com"
        }
      }
    }
  ]
}

出现操作用户无权限错误时,如何解决?

如果当前操作用户在操作添加RAM角色为MaxCompute工作空间成员时,出现FAILED: ODPS-0130013:Authorization exception - Authorization Failed [4003], You have NO privilege to do the PROJECT SECURITY OPERATION for {acs:odps:*:projects/****/authorization/users}. Context ID:1111-11111-1111-1111-11111.错误,表示当前的操作用户无MaxCompute账户操作或者授权权限,您需要为该用户添加admin角色。更多信息,请参见MaxCompute和DataWorks的权限关系

您可以参见如下步骤,为用户添加admin角色。

  1. 登录MaxCompute控制台

  2. 在页面左上角,选择地域。

  3. 项目管理页面中,单击目标项目对应的管理

  4. 单击角色权限

  5. 单击admin角色对应的成员管理

  6. 成员管理页面,将账号名添加到待添加账号名

  7. 成员管理对话中,单击确定MaxCompute项目成员

如何按照日志时间进行分区?

您可以在创建MaxCompute投递任务(新版)时,将MaxCompute分区列设置为__partition_time__,实现数据按照日志时间进行分区。MaxCompute分区

__partition_time__字段是根据日志服务中__time__字段的值计算得到的,结合时区配置以及分区时间格式,生成时间字符串。为避免触发MaxCompute单表分区数目的限制,日期分区列的值按照1800秒(半小时)对齐。更多信息,请参见__partition_time__字段

如何查看MaxCompute表的分区?

您可以通过show partitions {table-name};命令查看MaxCompute表的分区。其中,{table-name}为表名称,请根据实际值替换。

如何投递日志时间数据?

您可以在创建MaxCompute投递任务(新版)时,在MaxCompute普通列中添加__time__字段。用__time__字段表示日志时间,UNIX时间戳格式,精确到秒。

MaxCompute时间列

为什么有些字段值为null?

通常发生在类型不匹配或类型转换失败、日志对应字段不存在等场景。

  • 字段类型不匹配或者类型转换失败的处理,请参考处理脏数据

  • 关于不同类型格式要求,请参考数据类型