복붙노트

[HADOOP] Spark에서지도 작업의 ID를 얻는 방법?

HADOOP

Spark에서지도 작업의 ID를 얻는 방법?

Spark에서지도 작업의 ID를 가져 오는 방법이 있습니까? 예를 들어 각 맵 태스크가 사용자 정의 함수를 호출하면 해당 사용자 정의 함수에서 해당 맵 태스크의 ID를 얻을 수 있습니까?

해결법

  1. ==============================

    1.지도 작업의 ID가 무슨 뜻인지 잘 모르겠지만 TaskContext를 사용하여 작업 정보에 액세스 할 수 있습니다.

    지도 작업의 ID가 무슨 뜻인지 잘 모르겠지만 TaskContext를 사용하여 작업 정보에 액세스 할 수 있습니다.

    import org.apache.spark.TaskContext
    
    sc.parallelize(Seq[Int](), 4).mapPartitions(_ => {
        val ctx = TaskContext.get
        val stageId = ctx.stageId
        val partId = ctx.partitionId
        val hostname = java.net.InetAddress.getLocalHost().getHostName()
        Iterator(s"Stage: $stageId, Partition: $partId, Host: $hostname")
    }).collect.foreach(println)
    

    유사한 기능이 Spark 2.2.0의 PySpark에 추가되었습니다 (SPARK-18576).

    from pyspark import TaskContext
    import socket
    
    def task_info(*_):
        ctx = TaskContext()
        return ["Stage: {0}, Partition: {1}, Host: {2}".format(
            ctx.stageId(), ctx.partitionId(), socket.gethostname())]
    
    for x in sc.parallelize([], 4).mapPartitions(task_info).collect():
        print(x)
    
  2. ==============================

    2.나는 TaskContext.taskAttemptId가 당신이 원하는 것이라고 믿는다. TaskContext.get을 통해 함수 내에서 현재 작업의 컨텍스트를 가져올 수 있습니다.

    나는 TaskContext.taskAttemptId가 당신이 원하는 것이라고 믿는다. TaskContext.get을 통해 함수 내에서 현재 작업의 컨텍스트를 가져올 수 있습니다.

  3. from https://stackoverflow.com/questions/31631791/how-to-get-id-of-a-map-task-in-spark by cc-by-sa and MIT license