2
我希望儘可能多地從執行者那裏獲得儘可能多的信息,但是它正在執行,但似乎無法找到關於如何使用Web UI以外的任何信息。例如,知道哪個執行器正在處理哪個文件以及什麼時候處理該文件會很有用。如何獲取有關當前執行器(Apache)Spark的元數據?
我需要這種靈活性進行調試,但無法找到任何有關它的信息。
謝謝
我希望儘可能多地從執行者那裏獲得儘可能多的信息,但是它正在執行,但似乎無法找到關於如何使用Web UI以外的任何信息。例如,知道哪個執行器正在處理哪個文件以及什麼時候處理該文件會很有用。如何獲取有關當前執行器(Apache)Spark的元數據?
我需要這種靈活性進行調試,但無法找到任何有關它的信息。
謝謝
其中一個方法來完成它是mapPartitionsWithContext
示例代碼:
import org.apache.spark.TaskContext
val a = sc.parallelize(1 to 9, 3)
def myfunc(tc: TaskContext, iter: Iterator[Int]) : Iterator[Int] = {
tc.addOnCompleteCallback(() => println(
"Partition: " + tc.partitionId +
", AttemptID: " + tc.attemptId
)
)
iter.toList.filter(_ % 2 == 0).iterator
}
a.mapPartitionsWithContext(myfunc)
a.collect
API:https://spark.apache.org/docs/latest/api/scala/#org.apache.spark.TaskContext
然而,這並沒有回答這個問題如何查看處理哪個文件以及何時。
你想要RDD嗎?如果沒有,那麼你可以專注於SparkListener和ExecutorInfo。 – 2015-04-06 01:09:52
是的,我確實需要RDD,但我會調查SparkListener和ExecutorInfo(謝謝!) – 2015-04-06 13:13:34