2016-06-22 4 views
3

enter image description here私は6000イベントのバッチを取得したスパークストリーミングプロセスを実行しています。しかし、エグゼクティブを見ると、アクティブなタスクは1つしか実行されていません。私はダイナミックな割り当てを試み、エグゼキュータの数を設定するだけでなく、たとえ15人のエグゼキュータを持っていても、同時に1つのアクティブなタスクが実行されています。私がここで間違っていることを教えてください。Sparkで実行中のアクティブなタスクを動的に増やす方法

答えて

4

DStreamにパーティションが1つしかないようです。あなたが入力DStreamに16のパーティションを持つことになり、この方法

val input: DStream[...] = ... 
val partitionedInput = input.repartition(numPartitions = 16) 

、およびそれらのパーティションのそれぞれが別々のタスクで処理することができた(とそれらの各タスクを実行することができます:あなたは、明示的にあなたの入力ストリームを再分割してみてください別のエグゼクティブ)

+0

お返事ありがとうございました。この場合、私はすでにパーティションの数を40に設定していました。私はいつかこれについて悩んでいます。何か助けや指導が大変ありがとうございます。私のコードから抜粋:JavaPairInputDStream messages = KafkaUtils.createDirectStream( ... ); 文字列partitionSize = contextVal.getString(KAFKA_PARTITION); if(partitionSize!= null){ \t int repartitionSize = Integer.parseInt(partitionSize); \t messages.repartition(repartitionSize); } – Alchemist

+0

SparkのUIの[ジョブ]タブには、実行しようとしているジョブのタスクがいくつ表示されていますか? –

+0

アクティブなジョブと完成したジョブの数が1つだけ表示されます – Alchemist

関連する問題