このトピックでは、MaxCompute データ転送ジョブ (新バージョン) におけるよくある問題とそのソリューションについて説明します。
「User does not exist」エラー
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 **** というエラーが表示される場合、ターゲットユーザーが MaxCompute ワークスペースに追加されていないか、追加方法が間違っていることを示しています。この問題を解決するには、ユーザーを再度追加し、権限付与を完了してください。詳細については、「デフォルトロールに MaxCompute へのデータ書き込み権限を付与する (同一アカウント内でのデータ転送)」または「カスタムロールに MaxCompute へのデータ書き込み権限を付与する (同一アカウント内でのデータ転送)」をご参照ください。
「RAM role has no permission」エラー
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 ロールに必要な権限を再度付与してください。詳細については、「デフォルトロールに MaxCompute へのデータ書き込み権限を付与する (同一アカウント内でのデータ転送)」または「カスタムロールに MaxCompute へのデータ書き込み権限を付与する (同一アカウント内でのデータ転送)」をご参照ください。
FAILED: mismatched input エラー
RAM ユーザーが MaxCompute ワークスペースのメンバーとして RAM ロールを追加する際に FAILED: mismatched input エラーが発生した場合、お使いのアカウントに ADD USER などの文を実行する権限がないことを示しています。この問題を解決するには、Alibaba Cloud アカウントまたは以下のポリシーを持つ RAM ユーザーを使用して ADD USER などの文を実行してください。この一度限りの操作の後、RAM ユーザーで ADD USER などの文を実行しても、このエラーは発生しなくなります。
{
"Version": "1",
"Statement": [
{
"Action": "ram:CreateServiceLinkedRole",
"Resource": "*",
"Effect": "Allow",
"Condition": {
"StringEquals": {
"ram:ServiceName": "usermgmt.odps.aliyuncs.com"
}
}
}
]
}
ユーザー権限の不足
現在のユーザーが MaxCompute ワークスペースのメンバーとして RAM ロールを追加する際に 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 ロールを割り当てます。
-
MaxCompute コンソールにログインします。
-
ページ左上でリージョンを選択します。
-
プロジェクト管理 ページで、対象のプロジェクトを見つけ、[アクション] 列の 管理 をクリックします。
-
ロールの権限 タブをクリックします。
-
admin ロールを見つけ、[アクション] 列の メンバー管理 をクリックします。
-
メンバー管理 パネルで、[追加するアカウント名] フィールドにアカウント名を入力します。
-
メンバー管理 ダイアログボックスで、OK をクリックします。対象のアカウントを選択し、右矢印 (>) をクリックして [追加済みのアカウント] リストに移動させてから、[OK] をクリックします。
ログ時間によるパーティション分割
MaxCompute データ転送ジョブ (新バージョン) を作成する際、MaxComputeパーティション列 を __partition_time__ に設定することで、ログ時間によってデータをパーティション分割できます。[MaxCompute パーティションキー列] の構成では、__partition_time__ と __receive_time__ は、それぞれログ時間と受信時間から計算されるシステム定義のパーティションフィールドです。また、プラスアイコン (+) をクリックしてカスタムのパーティションキー列を追加し、http_method や operation など、Simple Log Service の既存のフィールドにマッピングすることもできます。
__partition_time__ フィールドは、Simple Log Service の __time__ フィールドの値に基づいて計算されます。指定されたタイムゾーンとパーティション時間フォーマットに基づいて時間文字列が生成されます。MaxCompute での単一テーブルのパーティション上限を超えないようにするため、MaxCompute は日付ベースのパーティションキー列の値を 1,800 秒 (30 分) 間隔に調整します。詳細については、「__partition_time__ フィールド」をご参照ください。
MaxCompute テーブルパーティションの表示
show partitions <table-name>; コマンドを実行して、テーブルのパーティションを表示します。このコマンドでは、 <table-name> をお使いのテーブル名に置き換えてください。
ログ時間データの転送
MaxCompute データ転送ジョブ (新バージョン) を作成する際、MaxCompute通常列 セクションに __time__ フィールドを追加できます。__time__ フィールドは、秒単位の精度を持つ UNIX タイムスタンプ形式のログ時間を表します。
例えば、__time__ フィールドを、MaxCompute テーブルの c14 などの送信先列にマッピングできます。
フィールド値が Null になる問題
この問題は通常、データ型の不一致、型変換の失敗、またはソースログのフィールド欠損が原因で発生します。
-
データ型の不一致または変換の失敗に対処するには、「ダーティデータの処理」をご参照ください。
-
データ型のフォーマット要件については、「安定性と制限」をご参照ください。
IP ホワイトリスト有効化後のジョブ失敗
MaxCompute プロジェクトで IP アドレスホワイトリスト (例:クラシックネットワークの IP アドレスホワイトリスト) を有効にすると、データ転送ジョブが次のようなエラーメッセージで失敗することがあります。
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:****-****
IP アドレスホワイトリストが原因で発生した障害を解決するには、MaxCompute で以下のコマンドを実行します。
-
MaxCompute コンソール にログインします。
-
ページ左上で、プロジェクトが所在するリージョンを選択します。
-
MaxCompute の左側のナビゲーションウィンドウで、 を選択します。
-
DataWorks で、以下の手順を実行します。DataWorks の使用方法の詳細については、「上級:ベストセラー商品カテゴリの分析」をご参照ください。
-
現在の IP アドレスホワイトリストの構成を照会します。
setproject; select 1; -
次のコマンドを使用して、既存のサービスホワイトリストに
AliyunLogSLRService,AliyunLogDefaultServiceを追加します。setproject odps.security.ip.whitelist.services=AliyunLogSLRService,AliyunLogDefaultService; -
構成が完了したら、次のコマンドを実行して新しいホワイトリストの設定を検証します。
setproject; select 1;setprojectコマンドを実行すると、システムはプロジェクトの構成プロパティを返します。odps.security.ip.whitelist.servicesとodps.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
-