Как получить идентификатор задачи карты в Spark?
Есть ли способ получить идентификатор задачи карты в Spark? Например, если каждая задача карты вызывает определенную пользователем функцию, могу ли я получить идентификатор этой задачи карты из этой пользовательской функции?
- Скрытые черты Scala
- Как сопоставить шаблон, используя регулярное выражение в Scala?
- Eclipse, Android, Scala легко, но все равно не работает
- Как заставить DataFrame оценивать в Spark
- Использовать случай scala.concurrent.blocking
- Как предотвратить java.lang.OutOfMemoryError: пространство PermGen при компиляции Scala?
- Могут ли мультипроекты из GIT использоваться в качестве зависимостей SBT?
- Более чистый способ обновления вложенных структур
Я не уверен, что вы подразумеваете под идентификатором задачи карты, но вы можете получить доступ к информации о задаче с помощью 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)
Аналогичная функциональность была добавлена в PySpark в 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)