質問1:不適切な削減タスクの数
ソリューション:
実際の状況に応じて、デフォルトの設定を調整する必要があり、パラメータ調整モードが変更することですスパーク .default.parallelismを。典型的には、数はコアの2~3倍の数を減少させるために設定されています。数は多くの小さなタスクで、その結果、タスクを開始するコストを増加させ、大きすぎると、数が少なすぎると、タスクが遅い実行されています。だから、spark.default.parallelismある数を減らすタスクを変更することが妥当です
質問2:長時間シャッフルディスクIO
ソリューション:
Spark.local.dirは、複数のディスクに設けられており、ディスクIOディスクの高速設定速度は、シャッフルIOを増加させることによって性能を最適化します。
質問3:マップ|シャッフルファイルの数が少ない結果として削減多数の、そしてより
ソリューション:
シャッフル中間ファイルをマージするために、trueに設定することでSpark.shuffle.consolidateFiles、この時のファイル数は減らすタスクの数です。
質問4:直列化された長い時間、大きな結果
ソリューション:
JDKのデフォルトの火花はこのようにして製造したObjectOutputStream、大きな結果を来て、CPUの処理時間が長い、org.apache.spark.serializer.KeyoSerializerをspark.serializerするように設定することができます。
結果は素晴らしいされている場合も、それはあなたが結果を知って、放送変数の方法を使用するのが最適です。
質問5:単一のレコードの消費量
ソリューション:
マップが計算され、各レコード内のパーティションがあるが使用mapPartitionあるいはマップは、mapPartitionは、パーティションごとに計算されます。
質問6:あなたは遅く、出力結果の多数を集めます
ソリューション:
すべてのソースコードを収集する分散ファイルシステムに直接出力され、ファイルシステムの内容を表示することができるメモリアレイ内の方法の結果です。
質問7:タスク実行速度の傾き
ソリューション:
データスキューは、一般的に良好なパーティションキーを達成している場合は、他の並列処理を考慮し、集約操作で中央にしてもよい。ワーカーがspark.speculationを設定することにより、エグゼキュータワーカー遅い実装の一部に、例えば、傾斜している場合=真スローは、それらのノードが除去持続しました。
質問8:RDDのマルチステップタスクによる操作または空の生成多くの小さなタスクを持っています
ソリューション:
パーティションのRDDの配分の数を減らすために使用するか、合体。
質問9:スパークストリーミングは、高いスループットではありません
ソリューション:
あなたはspark.streaming.concurrentJobsを設定することができます
質問10:ストリーミング速度が急に低下したスパークは、タスクの遅延や障害物がある場合が多いです
ソリューション:
これは、他の言葉で作成されたウィンドウは、私たちが仕事を開始しているため間隔は各ジョブの通常の実行結果として、あまりにも短い間隔で時間が指定された時間内に完了することはできませんあまりにも密な時間ウィンドウ間隔です。