このトピックでは、Tunnelコマンドを使用するときに発生する可能性のある一般的なエラー、エラーの原因、および解決策について説明します。
一般的なトンネルエラー:
エラーメッセージ: ErrorCode=NoSuchPartition, ErrorMessage=指定されたパーティションは存在しません。
エラーメッセージ: ErrorCode=Unauthorized, ErrorMessage=リクエスト認証ヘッダーが無効または欠落しています。
エラーメッセージ: ErrorCode=ローカルエラー、トンネルエンドポイントでダウンロードセッションを作成できませんでした。
エラーメッセージ: ErrorCode=NoSuchProject, ErrorMessage=指定されたプロジェクト名は存在しません。
エラーメッセージ: ErrorCode=NoPermission, ErrorMessage=Authorization Failed [4019], 「odps:Update」の権限はありません。
エラーメッセージ: ErrorCode=InvalidBlockID、ErrorMessage=指定されたブロックidは無効です。xxxx。
エラーメッセージ: ErrorCode=TableModified, ErrorMessage=ダウンロードが開始されてから、指定されたテーブルが変更されました。 別のダウンロードを開始してください。
エラーメッセージ: ErrorCode=StatusConflict, ErrorMessage=ダウンロードセッションが期限切れです。
エラーメッセージ: ErrorCode=StatusConflict, ErrorMessage=現在のアップロードまたはダウンロードステータスでは、指定された操作を完了できません。
エラーメッセージ: ErrorCode=InvalidProjectTable, ErrorMessage=指定されたプロジェクトまたはテーブル名が無効または欠落しています。
エラーメッセージ: ErrorCode=InvalidPartitionSpec, ErrorMessage=Error: 指定されたpartitionspecは無効です。
エラーメッセージ: ErrorCode=InvalidRowRange, ErrorMessage=指定された行範囲は無効です。
エラーメッセージ: ErrorCode=StatusConflict, ErrorMessage=アップロード | ダウンロードセッションは期限切れです。
エラーメッセージ: ErrorCode=FlowExceeded, ErrorMessage=フロークォータを超えています。
エラーメッセージ: ErrorMessag e=java.net。SocketException: Connection reset.
エラーメッセージ: ErrorCode=Unauthorized ErrorMessage=リクエスト認証ヘッダーが無効または欠落しています。 メッセージ: 署名は有効期限です。
エラーメッセージ: ErrorCode=MalformedDataStream ErrorMessage=指定したデータストリームが整形式でないか、スキーマに対して検証されませんでした。
エラーメッセージ: ErrorCode=MethodNotAllowed, ErrorMessage=指定されたメソッドは、クラスタ化されたテーブルとパーティションに対して使用できません。
エラーメッセージ: ErrorCode=InstanceNotTerminate, ErrorMessage=インスタンスが終了しません。
エラーメッセージ: ErrorCode=NoSuchPartition, ErrorMessage=指定されたパーティションは存在しません。
原因
宛先パーティションが存在しません。
解決策
show partitions <table_name>;
コマンドを実行して、指定したパーティション名が有効かどうかを確認するか、ターゲットテーブルのパーティションを作成します。 パーティションの作成方法の詳細については、「パーティションの追加」をご参照ください。
エラーメッセージ: ErrorCode=Unauthorized, ErrorMessage=リクエスト認証ヘッダーが無効または欠落しています。
原因
AccessKeyペアは無効であり、ID検証に失敗します。
解決策
AccessKeyペアページに移動し、有効なAccessKeyペアを取得します。 AccessKeyペアが有効な場合は、DingTalkグループに参加して問題を報告し、AccessKeyペアを使用して正常に実行されたアップロードまたはダウンロードに関するログを提供します。
エラーメッセージ: ErrorCode=ローカルエラー、トンネルエンドポイントでダウンロードセッションを作成できませんでした。
原因
原因1: ネットワークが接続されていません。
原因2: テーブルまたはパーティションに過度に小さなファイルが存在します。
解決策
原因1の解決策:
エラーを報告したデバイスのCLIで、
curl
コマンドを実行して、エラーメッセージに表示されるTunnelエンドポイントにアクセスし、アクセスが成功したかどうかを確認します。次の情報が返された場合、エンドポイントへのアクセスは成功です。 この場合、原因2の解決策に基づいてエラーをトラブルシューティングします。
エンドポイントへのアクセスに失敗した場合は、トンネルエンドポイントの設定を確認して変更します。
パブリックトンネルエンドポイントはh aliyun.comで終了します。 クラウドプロダクト相互接続ネットワークまたは仮想プライベートクラウド (VPC) のTunnelエンドポイントは、h aliyun-inc.comで終了します。 ビジネス要件に基づいてTunnelエンドポイントを指定できます。 Tunnelエンドポイントの詳細については、「エンドポイント」をご参照ください。
説明外部デバイスからクラウド製品相互接続ネットワークまたはVPCのトンネルエンドポイントにアクセスする場合、またはクラウド製品相互接続ネットワークまたはVPCにあるデバイスからパブリックトンネルエンドポイントにアクセスする場合、ネットワークの切断によりアクセスが失敗する可能性があります。
原因2の解決策:
MaxComputeクライアントまたはDataWorksコンソールで
desc extended
コマンドを実行し、テーブルまたはパーティション内のファイル数を表示します。desc extended <table_name> [partition(partition_spec)];
出力のFileNumの値は、ファイルの数を示します。 ファイル数が1,000を超える場合は、小さなファイルをマージする必要があります。
InstanceTunnelを使用してプロジェクトのデータをダウンロードする場合、このエラーはテーブルファイルの数が原因である可能性があります。 ファイル数が多い場合、タイムアウトエラーが発生する可能性があります。 SQLクエリ結果をダウンロードする必要がない場合は、InstanceTunnelを無効にできます。 これにより、SQL実行プロセスはLIMIT句の影響を受けず、テーブル内のすべてのデータが返されます。 クエリを高速化する場合は、WHERE句を追加できます。 たとえば、NULL値を含まない列を検索する場合は、
where xxx not null
句を追加して一時データを生成できます。 システムはフルテーブルスキャンを実行する必要はありません。
エラーメッセージ: ErrorCode=NoSuchProject, ErrorMessage=指定されたプロジェクト名は存在しません。
原因
MaxComputeプロジェクト名またはTunnelエンドポイントが無効です。
解決策
プロジェクト名を確認します。 プロジェクト名が無効な場合は、プロジェクト名を変更します。
MaxComputeプロジェクトの名前を表示するには、次の手順を実行します。
上部のナビゲーションバーで、リージョンを選択します。 [プロジェクト管理] タブでMaxComputeプロジェクトの名前を表示します。
Tunnelエンドポイントを確認します。 Tunnelエンドポイントが無効な場合は、Tunnelエンドポイントを変更します。
各リージョンのネットワークタイプごとのTunnelエンドポイントの詳細については、「エンドポイント」をご参照ください。
エラーメッセージ: ErrorCode=NoPermission, ErrorMessage=Authorization Failed [4019], 「odps:Update」の権限はありません。
原因
データをアップロードする権限がありません。
解決策
DataWorksの [データマップ] に移動し、ターゲットテーブルの更新権限を申請するか、プロジェクト所有者またはテーブル所有者に連絡してテーブルの更新権限を付与します。 更新権限を付与する方法の詳細については、「MaxCompute権限」をご参照ください。
エラーメッセージ: ErrorCode=NoPermission, ErrorMessage=Authorization Failed [4019], 'odps:Download' の権限はありません。
原因
データをダウンロードする権限がありません。
解決策
DataWorksの [データマップ] に移動して、宛先テーブルのダウンロード権限を申請します。 また、プロジェクトの所有者またはSuper_Administratorロールが割り当てられているユーザーに連絡して、テーブルのダウンロード権限を付与することもできます。 ダウンロード権限を付与する方法の詳細については、「ポリシーベースのアクセス制御」をご参照ください。
エラーメッセージ: ErrorCode=NoPermission, ErrorMessage=Authorization Failed [4021], 'xxx' に権限 'odps:Select' がありません。プロジェクト 'xxx' は保護されています。
原因
MaxComputeプロジェクトのデータ保護機能が有効になっています。 したがって、Tunnelコマンドを使用してデータをダウンロードすることはできません。
解決策
プロジェクト所有者に連絡して、必要な権限を付与する例外ポリシーを設定します。 例外ポリシーの詳細については、「データ流出ポリシー1: 例外ポリシーの設定」をご参照ください。
エラーメッセージ: ErrorCode=InvalidBlockID、ErrorMessage=指定されたブロックidは無効です。xxxx。
原因
複数のタスクが同時に実行されている場合、ブロックIDは無効です。
解決策
タスクの並列処理を減らし、次のコマンドを実行して、当日の5日前に生成されたログを削除します。
tunnel purge 5;
エラーメッセージ: ErrorCode=TableModified, ErrorMessage=ダウンロードが開始されてから、指定されたテーブルが変更されました。 別のダウンロードを開始してください。
原因
データのダウンロード中にテーブルが変更されます。
解決策
ダウンロードセッションを再作成してデータをダウンロードします。 次のいずれかの方法を使用して、変更レコードを表示できます。
DDL操作レコードの表示: DataWorksのデータマップに移動して、テーブルのデータ変更レコードを表示できます。 詳細については、「 MaxComputeテーブルデータ」をご参照ください。
エラーメッセージ: ErrorCode=StatusConflict, ErrorMessage=ダウンロードセッションが期限切れです。
原因
ダウンロード時間が24時間を超えています。 その結果、セッションは期限切れになります。
解決策
ダウンロードセッションを再作成してデータをダウンロードします。 リソースをアップロードしてUDFを作成するときは、次の項目に注意してください。
ダウンロードセッションが自動的に終了しない場合、セッションは24時間後に無効になります。
テーブルからデータをダウンロードするためのダウンロードセッションを作成した後、テーブルが変更されると、ダウンロードセッションは無効になります。
エラーメッセージ: ErrorCode=StatusConflict, ErrorMessage=現在のアップロードまたはダウンロードステータスでは、指定された操作を完了できません。
原因
原因1: アップロードセッションがコミットされました。
原因2: テーブルまたはパーティションに過度に小さなファイルが存在します。
解決策
原因1: アップロードセッションを再作成してデータをアップロードする解決策。
原因2の解決策: 小さなファイルをマージします。 詳細については、「小さなファイルのマージ」をご参照ください。
エラーメッセージ: ErrorCode=InvalidProjectTable, ErrorMessage=指定されたプロジェクトまたはテーブル名が無効または欠落しています。
原因
プロジェクト名またはテーブル名が無効です。
解決策
プロジェクト名またはテーブル名が無効かどうかを確認します。 プロジェクト名またはテーブル名が無効な場合は、変更します。
MaxComputeプロジェクトの名前を表示するには、次の手順を実行します。
上部のナビゲーションバーで、リージョンを選択します。 [プロジェクト管理] タブでMaxComputeプロジェクトの名前を表示します。
show tables;
コマンドを実行して、テーブル名を表示できます。
エラーメッセージ: ErrorCode=InvalidPartitionSpec, ErrorMessage=Error: 指定されたpartitionspecは無効です。
原因
パーティションフィールドまたは形式が無効です。
解決策
show partitions <table_name>;
コマンドを実行して、テーブルのパーティション情報を表示します。 パーティションフィールドの情報を確認し、次の要件が満たされていることを確認します。パラメーターのパーティションキー列のシーケンスは、CREATE TABLEステートメントのパーティションキー列のシーケンスと同じです。
パーティションキー列の値に、pt='a' やpt="a" などの一重引用符 (') または二重引用符 (") が含まれている場合は、以前のバージョンのTunnel SDKは引用符をサポートしていないため、最新バージョンのTunnel SDKが使用されていることを確認してください。
pt1=a、pt2=a
など、マルチレベルパーティション間にスペースが存在する場合は、そのスペースを削除します。テーブルがマルチレベルパーティションテーブルの場合、各パーティションレベルにパーティションを指定する必要があります。
パラメーターのパーティション名の小文字は、テーブル作成ステートメントのパーティション名の小文字と同じです。
エラーメッセージ: ErrorCode=InvalidRowRange, ErrorMessage=指定された行範囲は無効です。
原因
open_reader
メソッドのstartOffsetおよびcountパラメーターの値が無効です。解決策
コードを確認し、次の要件が満たされていることを確認します。
startOffsetの値は0以上です。
countの値は0より大きい。
エラーメッセージ: ErrorCode=StatusConflict, ErrorMessage=今すぐアップロードを閉じません: アップロードセッションを閉じるに失敗しました。ステータス競合のためです。現在のステータス: 重要です。
原因
DDL操作は失敗します。 その結果、アップロードセッションが異常となる。
解決策
アップロードセッションを再作成します。
エラーメッセージ: ErrorCode=StatusConflict, ErrorMessage=アップロード | ダウンロードセッションは期限切れです。
原因
アップロードセッションまたはダウンロードセッションの期間が24時間を超えています。 その結果、セッションは期限切れになります。
解決策
アップロードセッションまたはダウンロードセッションを再作成します。
エラーメッセージ: ErrorCode=FlowExceeded, ErrorMessage=フロークォータを超えています。
DingTalkグループ申請フォームに記入し、DingTalkグループに参加して問題を報告します。
エラーメッセージ: ErrorMessag e=java.net。SocketException: Connection reset.
原因
ほとんどの場合、このエラーは、SDKを使用して作成されたプログラムを使用する場合、またはサードパーティのプラットフォームがTunnelを使用して処理用のデータを読み取る場合に発生します。 サーバーの接続保護が有効になっています。 RecordReaderをオンにした後、300秒以内にサーバーからデータを読み取らないと、サーバーは切断されます。
RecordReaderにはキャッシュがあります。 データが低速で計算または処理される場合、キャッシュデータは、タイムアウト期間内に処理され得ず、データ読み取りはトリガされ得ない。 その結果、このエラーメッセージが表示されることがあります。
解決策
コード処理ロジックを最適化します。
エラーメッセージ: ErrorCode=Unauthorized ErrorMessage=リクエスト認証ヘッダーが無効または欠落しています。 メッセージ: 署名は有効期限です。
原因
署名ベースの時間検証は失敗します。
解決策
デバイスのシステム時間を確認し、Open Writerが呼び出された時間とデータ書き込み操作が開始される時間の間隔が15分を超えないことを確認します。 トンネルサーバーは、スケジュールどおりにネットワークタイムプロトコル (NTP) タイミングを実行します。 ほとんどの場合、NTPタイミングは正確です。 デバイスのシステム時刻が正しいことを確認した場合は、DingTalkグループ申請フォームに入力してDingTalkグループに参加し、問題を報告します。
Tunnel SDKを使用しているときにこのエラーが発生した場合は、Open Writerが呼び出されてからデータ書き込み操作が開始されるまでの時間間隔が15分を超えないようにしてください。 Open Writerが呼び出されると、署名が生成されます。
エラーメッセージ: ErrorCode=MalformedDataStream ErrorMessage=指定したデータストリームが整形式でないか、スキーマに対して検証されませんでした。
原因
アップロードするデータのスキーマは、ターゲットテーブルのスキーマとは異なります。
解決策
アップロードするデータのスキーマと宛先テーブルのスキーマを確認し、スキーマが同じであることを確認します。
エラーメッセージ: ErrorCode=MethodNotAllowed, ErrorMessage=指定されたメソッドは、クラスタ化されたテーブルとパーティションに対して使用できません。
原因
Tunnelコマンドを使用してクラスタ化テーブルをアップロードすることはできません。
解決策
なし
エラーメッセージ: ErrorCode=InstanceNotTerminate, ErrorMessage=インスタンスが終了しません。
原因
データをダウンロードするインスタンスが実行中です。
解決策
インスタンスの実行が停止した後、インスタンスのデータを再度ダウンロードします。