Performance 如何获得Spark中从hdfs读取数据的时间成本

Performance 如何获得Spark中从hdfs读取数据的时间成本,performance,apache-spark,Performance,Apache Spark,Spark的时间表包括: 调度程序延迟 任务反序列化时间 随机读取时间 执行器计算时间 随机写入时间 结果序列化时间 获得结果时间 从源(如hdfs)读取数据的时间成本似乎包含在执行器计算时间中。但我不确定 如果是在执行器计算时间中,如何在不包括计算时间成本的情况下获得它 谢谢。很难正确区分读取操作在读取数据时对数据进行处理所需的时间 一个简单的最佳选择就是只应用一个开销很小的简单操作(比如count)。如果您的文件很大,读操作将在琐碎的操作中占据主导地位,特别是如果它是一个类似计数的操作,而不

Spark的时间表包括:

  • 调度程序延迟
  • 任务反序列化时间
  • 随机读取时间
  • 执行器计算时间
  • 随机写入时间
  • 结果序列化时间
  • 获得结果时间
  • 从源(如hdfs)读取数据的时间成本似乎包含在执行器计算时间中。但我不确定

    如果是在执行器计算时间中,如何在不包括计算时间成本的情况下获得它


    谢谢。

    很难正确区分读取操作在读取数据时对数据进行处理所需的时间


    一个简单的最佳选择就是只应用一个开销很小的简单操作(比如count)。如果您的文件很大,读操作将在琐碎的操作中占据主导地位,特别是如果它是一个类似计数的操作,而不需要在节点之间移动数据(除了单值结果)。

    我不确定,但我认为数据不会完全加载然后处理,而是通常从磁盘流式传输。因此,在我看来,这两个阶段之间不应该有任何分离,因为它是在读取数据的同时进行处理的。那么,我如何区分读取数据时的网络延迟和计算延迟呢?如果您想在工作台上这样做,我想您可以在读取之后通过.persist()调用强制加载数据,然后在另一个阶段开始处理。这应该允许您处理内存中的数据,并评估这两部分。但是,总时间不会与之前的配置相同。您的问题有一大堆未被接受的答案,您是否愿意经历这些并接受需要接受的内容?