次の方法で共有


ノートブックに関するリアルタイムのアドバイスのための Apache Spark Advisor

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 の設定にアクセスして、その利点を享受し、生産性の高いノートブック作成エクスペリエンスを確保できます。

Spark Advisor の設定を示すスクリーンショット。