Apache Spark Advisor は、Apache Spark によって実行されるコマンドとコードを分析し、Notebook の実行に関するリアルタイムのアドバイスを表示します。 Apache Spark Advisor には、ユーザーが一般的な間違いを避けるのに役立つ組み込みのパターンがあります。 コードの最適化に関する推奨事項を提供し、エラー分析を実行し、エラーの根本原因を特定します。
組み込みのガイダンス
Impulse と統合されたツールである Spark Advisor には、Apache Spark アプリケーションの問題を検出して解決するための組み込みのパターンが用意されています。 この記事では、ツールに含まれるいくつかのパターンについて説明します。
必要なアドバイスの種類に基づいて、[ 最近の実行 ] ウィンドウを開くことができます。
'randomSplit' を使用すると、一貫性のない結果が返されることがあります
randomSplit メソッドを使用すると、不整合または不正確な結果が返される可能性があります。 randomSplit() メソッドを使用する前に、Apache Spark (RDD) キャッシュを使用します。
randomSplit() メソッドは、データ フレームで sample() を複数回実行することと同じです。 各サンプルでは、データ フレームを再取得し、パーティションを作成して、その中で並べ替えを行います。 パーティション間のデータ分散と並べ替え順序は、randomSplit() と sample() の両方にとって重要です。 データの再フェッチ時にいずれかの変更が行われると、分割間で重複または欠損値が発生する可能性があります。 また、同じシードを使用する同じサンプルは、異なる結果を生じ得る。
これらの不整合は、すべての実行で発生するわけではありませんが、それらを完全に排除するために、データ フレームをキャッシュしたり、列に再パーティション分割したり、 groupBy などの集計関数を適用したりします。
テーブル/ビュー名は既に使用されています
作成されたテーブルと同じ名前のビューが既に存在するか、作成されたビューと同じ名前のテーブルが既に存在します。 この名前がクエリまたはアプリケーションで使用されている場合、最初に作成されたビューに関係なく、ビューのみが返されます。 競合を回避するには、テーブルまたはビューの名前を変更します。
ヒントを認識できない
spark.sql("SELECT /*+ unknownHint */ * FROM t1")
指定されたリレーション名が見つかりません
ヒントで指定されたリレーションが見つかりません。 関係のスペルが正しく、ヒントのスコープ内でアクセス可能であることを確認します。
spark.sql("SELECT /*+ BROADCAST(unknownTable) */ * FROM t1 INNER JOIN t2 ON t1.str = t2.str")
クエリ内のヒントにより、別のヒントが適用されない
選択したクエリには、別のヒントが適用されないようにするヒントが含まれています。
spark.sql("SELECT /*+ BROADCAST(t1), MERGE(t1, t2) */ * FROM t1 INNER JOIN t2 ON t1.str = t2.str")
'spark.advise.divisionExprConvertRule.enable' を有効にして、丸め誤差の影響を軽減します。
このクエリには、Double 型の式が含まれています。 '構成 'spark.advise.divisionExprConvertRule.enable' を有効にすることをお勧めします。これにより、除算式の簡略化や丸め誤差の伝播防止につながります。'
"t.a/t.b/t.c" convert into "t.a/(t.b * t.c)"
クエリのパフォーマンスを向上させるには、'spark.advise.nonEqJoinConvertRule.enable' を有効にします。
このクエリには、クエリ内の "Or" 条件による時間のかかる結合が含まれています。 構成 'spark.advise.nonEqJoinConvertRule.enable' を有効にすることをお勧めします。これは、"Or" 条件によってトリガーされる結合を SMJ または BHJ に変換して、このクエリを高速化するのに役立ちます。
ユーザー エクスペリエンス
Apache Spark Advisor は、Notebook セルの出力で、情報、警告、エラーなどのアドバイスをリアルタイムで表示します。
Spark Advisor の設定
Spark Advisor の設定では、ニーズに応じて特定の種類の Spark アドバイスを表示または非表示にするかどうかを選択できます。 さらに、設定に基づいて、ワークスペース内のノートブックの Spark Advisor を柔軟に有効または無効にすることができます。
Fabric Notebook レベルで Spark Advisor の設定にアクセスして、その利点を享受し、生産性の高いノートブック作成エクスペリエンスを確保できます。


