2016-09-29 5 views

答えて

1

Apache SparkにはExecutorInfoというクラスがあり、実行者ホストIPを返すメソッドexecutorHost()があります。

1

SparkListener抽象クラスを使用して、実行者固有の2つのイベント(SparkListenerExecutorAddedおよびSparkListenerExecutorRemoved)を傍受する必要があります。

override def onExecutorAdded(executorAdded: SparkListenerExecutorAdded): Unit = { 
    val execId = executorAdded.executorId 
    val host = executorAdded.executorInfo.executorHost 
    executors += (execId -> host) 
    println(s">>> executor id=$execId added on host=$host") 
} 

override def onExecutorRemoved(executorRemoved: SparkListenerExecutorRemoved): Unit = { 
    val execId = executorRemoved.executorId 
    val host = executors remove execId getOrElse "Host unknown" 
    println(s">>> executor id=$execId removed from host=$host") 
} 

作業プロジェクト全体がSpark Executor Monitor Projectにあります。

+0

私はこのエグゼキュータのリストを提供して、エグゼキュータ(スティッキーパーティション)にマッピングパーティションのようなRDDの変換を行う必要があります。しかし、これはsc.start()が呼び出されているときではなく、後で呼び出されるように見えます。そのため、RDDを変換するためにdstream上のいくつかの関数を呼び出す前にリストを取得することはできません。御時間ありがとうございます ! –

+0

アクションを実行する前に特定のエグゼキュータを要求する必要がある場合(アプリケーションに割り当てられたエグゼキュータを知らない場合)、リストを 'preferredLocation'として持つカスタムRDDを開発する必要があります。それは実行可能な独自のカスタム 'DStream'を開発する必要があります。あなたは本当に何を達成しようとしていますか?ユースケースは何ですか? –

関連する問題