Notebook に関するリアルタイムのアドバイスのための Apache Spark アドバイザー

Apache Spark Advisor を使うと、Spark で実行されるコマンドとコードを分析し、Notebook の実行時にリアルタイムでアドバイスを表示することができます。 Apache Spark アドバイザーには、ユーザーが一般的な間違いを避けるのに役立つ組み込みパターンがあります。 このツールでは、コード最適化のための推奨事項が提供され、エラー分析が実行され、失敗の根本原因の特定が行われます。

組み込みのアドバイス

Spark Advisor は、Impulse と統合されたツールであり、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 アドバイザーの設定

Spark アドバイザーの設定では、ニーズに応じて特定の種類の Spark アドバイスを表示または非表示にするかどうかを選択できます。 さらに、設定に基づいて、ワークスペース内のノートブックの Spark アドバイザーを柔軟に有効または無効にすることができます。

Fabric Notebook レベルで Spark アドバイザーの設定にアクセスして、その利点を享受し、生産性の高いノートブック作成エクスペリエンスを確保できます。

Spark アドバイザーの設定を示すスクリーンショット。