このガイドは、Apache Spark で標準化され、実行可能なエラーメッセージを作成するためのリファレンスです。
Spark からスローされる例外は、「5W1H」に答える必要があります。
例外によって提供されるコンテキストは、誰 (通常はユーザー)、いつ (通常は log4j を介したログに含まれる)、そして どこ (通常はスタックトレースに含まれる) に答えるのに役立ちます。しかし、これらの回答だけでは、ユーザーが問題を解決するには不十分な場合が多くあります。何、なぜ、そして どのように という残りの質問に答えるエラーメッセージは、ユーザーのフラストレーションを最小限に抑えます。
多くの場合、エラーメッセージは 何、なぜ、そして どのように に明示的に答えるべきです。
そのクラスが定義されたスコープへのアクセスなしに、内部クラス {} のエンコーダーを生成できません。このクラスを親クラスの外に移動してみてください。
提案された修正 (どのように) が恣意的だと感じる場合、なぜ エラーが発生したかの説明を提供することで、ユーザーのフラストレーションを軽減できます。
修正前
修正後
関数名 {} は 無効です。一時関数はカタログに属することはできません。1 つまたは 2 つの部分からなる関数名を指定してください。
すべてのエラーメッセージがこれほど冗長である必要はありません。場合によっては、問題を解決する 方法 を明示的に説明することが冗長になることがあります。この場合、明示的な説明を省略できます。
無効なピボット列 {}。ピボット列は比較可能である必要があります。
修正前
修正後
ウィンドウ式 {} のフレームを指定できません。 ウィンドウ式には、関数フレーム {} と指定フレーム {} の間に不一致があります。
修正前
修正後
無効な 10 進数 {}; 位置 {} で解析中にエラーが発生しました。
場合によっては、なぜ 問題が発生したかを明示的に説明することが冗長になることがあります。この場合、明示的な説明を省略できます。
| フレーズ | 使用時期 | 例 |
|---|---|---|
| サポートされていない | ユーザーは合理的に操作がサポートされていると想定するかもしれませんが、実際にはサポートされていません。開発者が操作のサポートを追加した場合、このエラーは将来消える可能性があります。 |
データ型 {} は サポートされていません。
|
| 無効 / 許可されない / 予期しない | ユーザーが操作の指定で間違いを犯しました。メッセージは、ユーザーにエラーの解決方法を通知する必要があります。 |
配列のサイズが {}、インデックス {} は 無効 です。
|
句 {} に対して 1 つのジェネレーターが見つかりました。 1 つのジェネレーターのみ許可されます。
|
||
予期しない状態フォーマットバージョン {} が見つかりました。バージョン 1 または 2 が期待されていました。
|
||
| 失敗しました | システムは、ユーザーのエラーに合理的に起因しない予期しないエラーに遭遇しました。 |
コンパイルに失敗しました {}。
|
| できない | いつでも、できれば上記の代替手段のいずれも適用されない場合にのみ。 |
サポートされていない 型 {} のコードを生成できません。
|
| ベストプラクティス | 修正前 | 修正後 |
|---|---|---|
| 能動態を使用する |
データ型 {} は {} で サポートされていません。
|
{} はデータ型 {} を サポートしていません。
|
| 将来のサポートの約束など、時間に基づいた記述を避ける |
Pandas UDF 集約式は、現在ピボットではサポートされていません。
|
ピボットは Pandas UDF 集約式を サポートしていません。
|
Parquet 型が まだ サポートされていません: {}.
|
{} は Parquet 型を サポートしていません。
|
|
| 現在形を使用してエラーを説明し、提案を行う |
{} の参照列を {} で 見つけられませんでした。
|
{} の参照列を {} で 見つけられません。
|
結合戦略ヒントパラメータは、識別子または文字列である必要がありますが、{} でした。
|
結合戦略ヒントパラメータ {} は使用できません。 テーブル名または識別子を使用して パラメータを指定してください。
|
|
| 解決策が不明確な場合は、具体的な例を提供する |
{} ヒントは、パーティション番号をパラメータとして期待します。
|
{} ヒントは、パーティション番号をパラメータとして期待します。 例えば、{} (3) で 3 つのパーティションを指定してください。
|
| 非難的、審判的、または侮辱的に聞こえることを避ける |
{} の金額を 指定する必要があります。
|
{} は空にできません。{} の金額を指定してください。
|
| 直接的になる |
LEGACY ストア割り当てポリシーは、Spark データソース V2 では許可されていません。 設定 spark.sql.storeAssignmentPolicy を他の値に設定してください。
|
Spark データソース V2 は、LEGACY ストア割り当てポリシーを許可しません。設定 spark.sql.storeAssignment を ANSI または STRICT に設定してください。
|
| ユーザー向けのメッセージにプログラミング用語を使用しない |
テーブル名の変更 のソースと宛先のデータベースが一致しません: '{}' != '{}'。
|
テーブル名の変更 のソースと宛先のデータベースが一致しません。ソースデータベースは {} ですが、宛先データベースは {} です。
|