注: 以下の翻訳の正確性は検証されていません。AIPを利用して英語版の原文から機械的に翻訳されたものです。
以下は、ビルドとチェックに関するよくある質問です。
一般的な情報については、ビルドとヘルスチェックのドキュメンテーションをご覧ください。
ビルドエラーのデバッグに困っている場合、以下の手順を考慮してみてください。
ビルドは以前に成功したことがありますか?もしそうなら、データセットを生成するロジックに変更を加えましたか?それらの変更を元に戻してみてください。もしビルドが成功すれば、問題は新しいロジックにある可能性が高いです。また、ビルドアプリケーションのデータセットパネルでログを選択し、ビルド履歴を確認することもできます。
基礎となるデータは最近変更されましたか?これはいくつかの方法で現れるかもしれません:
Foundryのエラーメッセージは長く、時には理解しづらいことがあります。行動を起こしにくいエラーメッセージに遭遇した場合、以下の手順を試してみてください。
よく、エラートレースの最も役立つ部分はキーフレーズによって先行されます。エラーメッセージの中で以下のフレーズを探して、トラブルシューティングに有益な指導を見つけることができるかもしれません。メッセージの重要な部分はしばしば下部に表示されます:
What went wrong:
Caused by:
Py4JJavaError
UserCodeError
エラーが他のコンテキストが少ないErrorInstanceIDを参照している場合、問題をPalantirサポートにエスカレートしてください。 ErrorInstanceIDsはユーザーのロジックエラーに対しても表示されるため、まずこれが問題の原因である可能性を確認してください。
サポートに連絡する際には、必ず以下を含めてください:
ビルドが通常よりも長く"リソース待ち"の状態で停止しており、実行されていません。これは、ビルドを実行している時にプラットフォーム上での活動が増えたことが原因である可能性があります。この時に実行される多数のビルドがプラットフォーム上の利用可能なリソースを使用してしまい、他のビルドが終了してリソースが解放されるまでビルドがキューに入れられてしまう可能性があります。この動作は、Spark変換で説明されているSparkの実行モデルの副産物です。
トラブルシューティングを行うために、以下の手順を実行してみてください:
プラットフォームがあまり活発でない時間にビルドを実行してみて、パフォーマンスが改善するかどうかを確認してみてください。これにより、ビルドが他のジョブの後ろにキューに入るのを避けることができます。
ジョブをスケジューリングしている場合は、時間や深夜などの一般的な時間にジョブを実行するのを避けてください。
ビルドのパフォーマンスが時間とともに低下する原因は、次のいずれか、または複数の要素によるものである可能性があります:1)変換のロジックの変更、2)入力データスケールの変更、または、3)ビルド時のクラスタ上の計算負荷の増加。
トラブルシューティングを行うために、以下の手順を実行してみてください:
キーごとに多数のエントリを持つ大きな左表と少数のエントリを持つ小さな右表を含む結合は、塩化結合の完全な候補となります。これにより、データがパーティション間で均等に分散されます。
トラブルシューティングを行うために、以下の手順を実行してみてください:
EXPLODE
関数です。EXPLODE
はクロスプロダクトです:SELECT 'a' AS test, EXPLODE(ARRAY(1,2,3,4,5)) AS dummy2
test | test2
----------------
a | 1 # 'a'と'1'のテストデータ
a | 2 # 'a'と'2'のテストデータ
a | 3 # 'a'と'3'のテストデータ
a | 4 # 'a'と'4'のテストデータ
a | 5 # 'a'と'5'のテストデータ
以下のような問題を抱えた結合を持っているとします:
この結合は、ビルドが報告するいくつかのタスクが他のタスクよりもはるかに長くかかり、より多くのデータをシャッフル / スピルする可能性があるため、失敗する場合があります。これは、ユーザーのデータセットがスキューを起こしている可能性がある一つの指標です。
スキューを確認する別の方法は、Contourで各テーブルを開き、something
行でピボットし、行数を集約し、something
で左と右のテーブルを結合し、集約列を掛け合わせることです。これにより、something
のキーごとの行数が出力され、理想的には均等に分布していますが、スキューがある場合はソルテッド結合が必要であることを示します。
ユーザーのコードを以下のようなものに置き換えることを検討してください:
チューニング:
explode
ファクターは少なくとも X にしてください。次の点に注意してください:
CEIL(RAND() * N)
は 1 から N までの整数を生成します。FLOOR(RAND() * N)
は 0 から N - 1 までの数値を生成します。ソルト化されたジョインで、正しい数値のセットを倍増させるようにしてください。ソルト化によるオーバーヘッド
各リポジトリには、参照される各パスと、そのパスによって参照されるデータセットの一意の ID、およびそのデータセットの現在のパスを定義する「shrinkwrap」ファイルが含まれています。これは、データセットがフォルダ間で移動された場合などに便利です。リポジトリがそのデータセットを生成する際の shrinkwrap ファイルが更新されると、次回ビルドが実行されるときに、データセットが正しい場所でビルドされます。データセットの削除、名前の変更、移動などの理由で、shrinkwrap エラーが表示されることがあります。
トラブルシューティングのために、以下の検討事項と関連するアクションを確認してください:
特定のリポジトリの shrinkwrap ファイルを見つけるには:
transforms-shrinkwrap.yml
ファイルが以下のように表示されます。リポジトリの shrinkwrap ファイルに記載されているデータセットが存在しなくなっている可能性があります。通常、shrinkwrap エラーは、どのデータセットが存在せず、リポジトリのどこで参照されているかを教えてくれます。
ブランチを反復処理している間に、master
に変更がマージされ、リポジトリにファイルが追加され、shrinkwrap ファイルが更新された可能性があります。これを解決するには、以下の手順を実行します:
transforms-shrinkwrap.yml
ファイルに移動します。ビルドを実行するには、トリガーするユーザーが必要な権限を持っている必要があります。具体的には、ユーザーは出力データセットの Editor
である必要があります。これは、ビルドの実行は事実上、出力ファイルの編集を行うことになるからです。
特定のデータセットでどのような権限を持っているかを簡単に確認する方法は、Data Lineage でデータセットを開き、Permissions フィルターを有効にし、Resource Permissions を選択してノードの色を変更することです。
このエラーは、データセットのビルドが失敗し、そのスケジュールが上流のデータセットのビルドが失敗したためにキャンセルされた場合に発生します。
トラブルシューティングのために、次の手順を実行してください:
ビルドしようとしているデータセットは、別のリポジトリによって制御されていると考えています。データセットがどのリポジトリによって制御されているかは、データセットプレビューページの Details タブの Job spec セクションの sourceProvenance ブロックで確認できます。これは、複数のリポジトリが同じ出力データセットを作成する場合に発生します。
トラブルシューティングのために、次の手順を実行してください:
タイムアウトでチェックが失敗する原因はさまざまですが、以下のような一般的な手順を実行することで、問題が解決することがよくあります:
ci.yml
に —refresh-dependencies
という行を追加します。