C'è un modo per ottenere l'ID di un'attività mappa in Spark? Ad esempio, se ogni attività della mappa chiama una funzione definita dall'utente, posso ottenere l'ID di tale attività della mappa da quella funzione definita dall'utente?Come ottenere l'ID di un'attività della mappa in Spark?
7
A
risposta
15
io non sono sicuro di cosa si intende per ID di mappa compito, ma è possibile accedere alle informazioni attività utilizzando 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)
Una funzionalità simile è stato aggiunto al PySpark a Spark 2.2.0 (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)