MaxCompute投遞任務(新版)常見報錯與問題

更新時間:
Copy as MD

本文介紹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(同帳號投遞)授權自訂角色寫資料到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(同帳號投遞)授權自訂角色寫資料到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角色。更多資訊,請參見MaxComputeDataWorks的許可權關係

您可以參見如下步驟,為使用者添加admin角色。

  1. 登入MaxCompute控制台

  2. 在頁面左上方,選擇地區。

  3. 專案管理頁面中,單擊目標專案對應的管理

  4. 單擊角色許可權

  5. 單擊admin角色對應的成员管理

  6. 成员管理頁面,將帳號名添加到待添加帳號名

  7. 成员管理對話中,單擊確定。勾選目標帳號,單擊向右箭頭(>)將其移至已添加帳號列表,然後單擊確定

如何按照日誌時間進行分區?

您可以在建立MaxCompute投遞任務(新版)時,將MaxCompute分區列設定為__partition_time__,實現資料按照日誌時間進行分區。在MaxCompute分區列配置中,__partition_time____receive_time__為系統預設的分區時間列,分別根據日誌時間和日誌到達時間自動計算。此外,可單擊加號按鈕添加自訂分區列,將其映射為Log Service中已有的欄位(例如http_methodoperation)。

__partition_time__欄位是根據Log Service__time__欄位的值計算得到的,結合時區配置以及分區時間格式,產生時間字串。為避免觸發MaxCompute單表分區數目的限制,日期分區列的值按照1800秒(半小時)對齊。更多資訊,請參見__partition_time__欄位

如何查看MaxCompute表的分區?

您可以通過show partitions {table-name};命令查看MaxCompute表的分區。其中,{table-name}為表名稱,請根據實際值替換。

如何投遞日誌時間資料?

您可以在建立MaxCompute投遞任務(新版)時,在MaxCompute普通列中添加__time__欄位。用__time__欄位表示日誌時間,UNIX時間戳記格式,精確到秒。

例如,將 __time__ 欄位對應到 MaxCompute 表中的目標列(如 c14)。

為什麼有些欄位值為null?

通常發生在類型不符或類型轉換失敗、日誌對應欄位不存在等情境。

MaxCompute專案管理中開啟白名單(例如開啟傳統網路IP白名單),可能導致MaxCompute投遞失敗

例如使用者開啟了MaxCompute白名單後,投遞任務會報如下錯誤:

error:RequestId=202211181752058538dc0b0018****, ErrorCode=NoPermission, ErrorMessage=Access denied by project ip white list: sourceIP:'192.168.x.x' is not in white list. project: slstest-1 from:
errorType:odps.OdpsError
jobId:****-****

可以在MaxCompute側執行命令解決白名單導致的MaxCompute投遞失敗問題。操作步驟如下所示:

  1. 登入 MaxCompute控制台

  2. 在頁面左上方,選擇專案所在地區。

  3. MaxCompute左側導覽列,選擇DataWorks > 数据开发

  4. 然後在DataWorks中執行以下操作。關於DataWorks的使用,請參見進階:商品訂單暢銷類目分析

    1. 查詢當前白名單配置。

      setproject; 
      select 1;
    2. 在已有服務白名單後面添加AliyunLogSLRService,AliyunLogDefaultService。完整命令如下所示:

      setproject odps.security.ip.whitelist.services=AliyunLogSLRService,AliyunLogDefaultService;
    3. 配置結束之後通過以下命令確認白名單是否生效。

      setproject; 
      select 1;

      執行setproject命令後返回專案配置屬性,重點關注odps.security.ip.whitelist.servicesodps.security.outbound.destination兩項配置:

      odps.output.field.formatter=
      odps.project.longtimetmpfile.max.remain.days=30
      odps.project.longtimetmpfile.min.remain.days=3
      odps.project.maintenance.alarm={"storage.warning.ratio":"85","storage.warning.receiver":"","storage.critical.receiver":"","storage.critical.ratio":"95"}
      odps.project.maintenance.window=
      odps.schema.evolution.enable=false
      odps.schema.model.enabled=false
      odps.security.enabledownloadprivilege=false
      odps.security.ip.whitelist=
      odps.security.ip.whitelist.services=AliyunLogSLRService,AliyunLogDefaultService
      odps.security.outbound.destination=
      odps.security.vpc.whitelist=
      odps.session.flag.authority=false
      odps.spark.kube.mode=false
      odps.sql.acid.table.enable=true
      odps.sql.allow.cartesian=false
      odps.sql.allow.fullscan=false
      odps.sql.auto.mv.quota.gb=-1
      odps.sql.cfile2.field.maxsize=8192