サーチ…


前書き

このトピックの目的は、Apache Sparkに関連する質問に対してベストプラクティスを文書化することです。

環境の詳細:

Apache Sparkに関する質問には、以下の情報を含めてください。

  • 該当する場合、クライアントとSparkデプロイメントで使用されるApache Sparkのバージョン。 API関連の問題については、メジャー(1.6,2.0,2.1など)で十分です。バグの可能性に関する質問は、常に完全なバージョン情報を使用します。
  • Sparkバイナリの構築に使用されるScalaのバージョン。
  • JDKバージョン( java -version )。
  • ゲスト言語(Python、R)を使用する場合は、言語バージョンに関する情報を提供してください。 Python 以上の言語のバリエーションを区別するタグを使用します。
  • 該当する場合はビルド定義( build.sbtpom.xml )、該当する場合は外部依存バージョン(Python、R)。
  • クラスタマネージャ( local[n] 、スパークスタンドアロン、糸、メゾス)、モード( clientcluster )、およびその他のサブミットオプション(該当する場合)

データとコードの例

データの例

分散データ構造を作成するために必要なすべてのコードで、入力ファイルやローカルコレクションなどの退屈で時間のかかる構文解析を行うことなく、答えによって直接使用できる形式で最小限のサンプル入力データを提供してください。

適用可能な場合は常に型情報を含みます:

  • RDDベースのAPIでは、必要なときにタイプ注釈を使用します。
  • DataFrameベースのAPIでは、スキーマ情報をStrucTypeとして、またはDataset.printSchemaから出力しDataset.printSchema

Dataset.showまたはprintからの出力は見た目がよく見えますが、基になる型については何も教えてくれません。

スケールでのみ問題が発生した場合は、ランダムデータジェネレータを使用してください(Sparkは、 org.apache.spark.mllib.random.RandomRDDsorg.apache.spark.graphx.util.GraphGeneratorsでいくつかの便利なユーティリティを提供しています)

コード

可能であれば、タイプ注釈を使用してください。あなたのコンパイラは型を簡単に追跡することができますが、単なる死人のためにはそれほど簡単ではありません。例えば:

val lines: RDD[String] = rdd.map(someFunction)

または

def f(x: String): Int = ???

以下より良い:

val lines = rdd.map(someFunction)

そして

def f(x: String) = ???

それぞれ、

診断情報

デバッグの質問。

質問が特定の例外をデバッグすることに関連する場合は、常に関連するトレースバックを提供してください。重複した出力を(異なるエグゼキュータまたは試行から)削除することをお勧めしますが、トレースバックを1行または例外クラスのみにカットしないでください。

パフォーマンスに関する質問。

コンテキストによっては、次のような詳細を提供してください。

  • RDD.debugString / Dataset.explain
  • 該当する場合は、DAGダイアグラムを使用してSpark UIから出力します。
  • 関連するログメッセージ。
  • 外部ツール(Ganglia、VisualVM)によって収集された診断情報。

あなたが尋ねる前に



Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow