如何获取有关当前执行程序 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 的元数据?的主要内容,如果未能解决你的问题,请参考以下文章

Android,如何获取有关当前正在显示的活动的信息(在前台)?

Apache-Spark 作为日志存储

Hortonworks 中有关纱线的字数示例失败

如何获取执行程序的当前路径

如何获取程序当前执行路径?

iOS:如何获取设备当前语言设置?