如何获取有关当前执行程序的元数据,Apache-Spark?

时间:2015-04-05 03:33:23

标签: apache-spark metadata executor

我希望从执行程序中获取尽可能多的信息,同时它正在执行,但似乎无法通过使用Web UI找到有关如何实现其他信息的任何信息。例如,知道哪个文件正在由哪个执行程序处理,以及何时处理将是有用的。

我需要这种灵活性来进行调试,但无法找到有关它的任何信息。

谢谢

1 个答案:

答案 0 :(得分:0)

完成它的方法之一是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

但是,这并没有回答有关如何查看处理的文件以及何时处理的问题。