如何获取有关当前执行程序 Apache-Spark 的元数据?
Posted
技术标签:
【中文标题】如何获取有关当前执行程序 Apache-Spark 的元数据?【英文标题】:How to obtain metadata about the current executor(s), Apache-Spark? 【发布时间】:2015-04-05 03:33:23 【问题描述】:我想在执行程序执行时从执行程序中获取尽可能多的信息,但除了使用 Web UI 之外,似乎找不到任何有关如何完成该操作的信息。例如,了解哪个文件正在由哪个执行程序处理以及何时处理会很有用。
我需要这种灵活性进行调试,但找不到任何相关信息。
谢谢
【问题讨论】:
你想从 RDD 获得它吗?如果没有,那么您可以专注于 SparkListener 和 ExecutorInfo。 是的,我确实想要来自 RDD,但我会调查 SparkListener 和 ExecutorInfo(谢谢!) 【参考方案1】:实现它的方法之一是 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
但是,这并不能回答有关如何查看处理了哪个文件以及何时处理的问题。
【讨论】:
以上是关于如何获取有关当前执行程序 Apache-Spark 的元数据?的主要内容,如果未能解决你的问题,请参考以下文章