如何找到哪个输入图像/数据在 spark 的哪个工作节点上处理?

问题描述 投票:0回答:1

我有大量数据(图像)使用机器学习模型(CNN)来处理图像并给出结果。作为 spark 作业性能的一部分,我正在尝试查看内部 spark (YARN) 作业流程。 Spark UI 显示作业列表、阶段 - DAG、执行程序和工作节点详细信息,但我试图在控制台中查找/打印 RDD 的内容。 是否有可能找到图像在每个节点中的分块方式?

我试过 df.rdd.glom().collect() 并没有打印任何东西,df.collect() 给出了图像值的数组格式的数组,但它是合并的。

apache-spark pyspark hadoop-yarn apache-spark-mllib spark-jobserver
1个回答
0
投票

Spark 将数据加载到分区中,每个分区在一个工作节点中。 Spark 提供了一个迭代分区的函数,叫做

foreachPartition
,你可以用它来打印每个分区的内容和关联的工作节点,这是一个伪代码:

from pyspark.sql.functions import col
from pyspark import TaskContext

def print_partition_data(data):
    node_name = TaskContext.get().getHost()
    partition_id = TaskContext.getPartitionId()
    print(f"Partition number {partition_id} is on node {node_name}:")
    for d in data:
        print(d)

# Then call the function like this
df.foreachPartition(print_partition_data)
© www.soinside.com 2019 - 2024. All rights reserved.