注: 以下の翻訳の正確性は検証されていません。AIPを利用して英語版の原文から機械的に翻訳されたものです。
ビルドとチェックに関するよくある質問を以下に示します。
一般的な情報については、ビルドとヘルスチェックのドキュメントを参照してください。
ビルドエラーのデバッグが難しい場合は、以下の手順を検討してください。
ビルドが成功したことはありますか?成功したことがある場合、データセットを生成するロジックを変更しましたか?その変更を元に戻してみてください。ビルドに成功する場合は、新しいロジックが問題の原因である可能性が高いと判断できます。また、Builds アプリケーションのデータセットペインでログを選択して、ビルド履歴を確認することもできます。
元のデータが最近変更されましたか?その影響は、以下のような形で現れることがあります。
Foundry のエラーメッセージは長く、理解しにくいことがあります。対処方法がわかりにくいエラーメッセージが表示された場合は、以下の手順を試してください。
エラートレースで最も役立つ情報の前には、特定のフレーズが記載されていることがよくあります。トラブルシューティングに役立つ手がかりを見つけるため、エラーメッセージ内で以下のフレーズを探します。メッセージの重要な部分は、下部に表示されることがよくあります。
What went wrong:Caused by:Py4JJavaErrorUserCodeErrorエラーに ErrorInstanceID が記載されていて、ほかの情報がほとんどない場合は、Palantir サポートに問題をエスカレーションしてください。ErrorInstanceID はユーザーのロジックエラーでも表示されるため、まず、それが問題の原因である可能性がないか確認してください。
サポートに問い合わせる際は、必ず以下を含めてください。
ビルドが通常より長く「リソース待ち」の状態のままで、実行されていません。これは、ビルドを実行しているときにプラットフォーム上のアクティビティが増加していることが原因である可能性があります。そのときに実行されている多数のビルドが、プラットフォーム上の利用可能なリソースを使い切っている場合、ほかのビルドが完了してリソースが解放されるまで、ビルドはキューに入れられます。この動作は、Spark トランスフォームで説明している Spark 実行モデルに伴うものです。
トラブルシューティングには、以下の手順を実施します。
プラットフォームのアクティビティが少ない時間帯にビルドを実行し、パフォーマンスが改善するか確認します。これにより、ほかのジョブの後ろでビルドがキュー待ちになることを避けやすくなります。
ジョブをスケジュールする場合は、毎正時や午前0時など、よく使われる時間帯にジョブを実行しないようにします。
--
ビルドのパフォーマンスが時間とともに低下する原因として、次の1つ以上が考えられます。1)トランスフォームのロジックの変更、2)入力データの規模の変化、3)ビルド時のクラスターの計算負荷の増加。
トラブルシューティングには、以下の手順を実施します。
キーごとのエントリが多い大きな左側のテーブルと、キーごとのエントリが少ない小さな右側のテーブルを含む結合は、パーティション間でデータを均等に分散するソルト付き結合に最適です。
トラブルシューティングするには、次の手順を実行します。
EXPLODE 関数です。EXPLODE は直積です:SELECT 'a' AS test, EXPLODE(ARRAY(1,2,3,4,5)) AS dummy2 test | test2
----------------
a | 1
a | 2
a | 3
a | 4
a | 5
Copied!1 2 3 4 5 6 7 8SELECT left.*, right.* FROM `/foo/bar/baz` AS left JOIN `/foo2/bar2/baz2` AS right ON left.something = right.something
something 列でピボットして行数を集計し、左側と右側のテーブルを something で結合して、集計した列を乗算することです。これにより、something のキーごとの行数が出力されます。理想的には均等に分散しますが、偏りがある場合はソルト付き結合が必要であることを示します。Copied!1 2 3 4 5 6 7 8SELECT left.*, right.* FROM (SELECT *, FLOOR(RAND() * 8) AS salt FROM `/foo/bar/baz`) AS left JOIN (SELECT *, EXPLODE(ARRAY(0,1,2,3,4,5,6,7)) AS salt FROM `/foo2/bar2/baz2`) AS right ON left.something = right.something AND left.salt = right.salt
チューニング:
explode の倍率を少なくとも X にします。次の点に注意してください。
CEIL(RAND() * N) は1から N までの整数を返します。FLOOR(RAND() * N) は0から N − 1までの数値を返します。ソルト付き結合では、正しい数値の集合を展開してください。ソルト適用によるオーバーヘッド
各リポジトリには「shrinkwrap」ファイルが含まれており、参照されている各パス、そのパスが参照するデータセットの一意の ID、およびそのデータセットの現在のパスの対応関係を定義します。これは、たとえばデータセットがフォルダー間で移動されたときに役立ちます。そのデータセットを生成するリポジトリの shrinkwrap ファイルが更新され、次回ビルドが実行されると、データセットは正しい場所にビルドされます。データセットの削除、名前の変更、場所の変更など、いくつかの理由で shrinkwrap エラーが表示されることがあります。
トラブルシューティングするには、次の考慮事項と関連する対応を確認します。
特定のリポジトリの shrinkwrap ファイルを見つけるには、次の手順を実行します。
transforms-shrinkwrap.yml ファイルが表示されるはずです。
リポジトリの shrinkwrap ファイルで参照されているデータセットが、もう存在しない可能性があります。通常、shrinkwrap エラーには、存在しないデータセットと、それらがリポジトリ内のどこで参照されているかが示されます。
このブランチで作業を繰り返している間に、ファイルをリポジトリに追加し、shrinkwrap ファイルを更新する変更が master にマージされた可能性があります。これを解決するには、次の手順を実行します。
transforms-shrinkwrap.yml ファイルに移動します。ビルドを実行するには、ビルドをトリガーするユーザーに必要な権限が付与されている必要があります。具体的には、ビルドの実行は実質的に出力ファイルの編集にあたるため、ユーザーは出力データセットの編集者である必要があります。
特定のデータセットに対する権限を簡単に確認するには、Data Lineage でそのデータセットを開き、権限フィルターを有効にして、リソースの権限を選択し、ノードを色分けします。
このエラーは、上流データセットのビルドに失敗したために、対象のデータセットをビルドしていたスケジュールがキャンセルされ、そのデータセットのビルドに失敗したときに発生します。
トラブルシューティングするには、次の手順を実行します。
ビルドしようとしているデータセットは、別のリポジトリによって管理されていると認識しています。データセットがどのリポジトリによって管理されているかは、データセットプレビューのページの詳細タブにある、ジョブスペックセクションの sourceProvenance ブロックで確認できます。これは、複数のリポジトリが同じ出力データセットを作成しているときに発生します。
トラブルシューティングするには、次の手順を実行します。
チェックがタイムアウトで失敗する理由はさまざまですが、次のような一般的な手順で解消できることがよくあります。
ci.yml に —refresh-dependencies という行を追加します。