记录中间数据集的已处理度量标准

时间:2016-12-08 12:36:53

标签: apache-spark

我使用DATASET API创建了一个spark作业。在HDFS上收集最终结果之前,会执行一系列操作。

但我还需要知道为每个中间数据集读取了多少条记录。假设我对数据集应用了5个操作(可能是map,groupby等),我需要知道5个中间数据集中每个都有多少条记录。任何人都可以建议如何在数据集级别获得这一点。我想我可以在任务级别(使用监听器)找到它,但不知道如何在数据集级别获得它。

由于

1 个答案:

答案 0 :(得分:0)

与指标相关的Spark文档最近的是Accumulators。然而,这仅适用于操作,并且他们提到不会更新acucmulators以进行转换。

您仍然可以使用count来获取每次操作后的最新计数。但是应该记住,它是一个额外的步骤,你需要看看是否应该使用更少的指标更快地完成摄取或使用所有指标更慢。

现在回到listerners,我看到SparkListener可以接收有关应用程序,作业,阶段和任务何时开始和完成的事件,以及其他基于以设备为中心的事件(如添加或删除驱动程序),当RDD未被使用时,或环境属性改变时。您可以在WebUI中找到有关Spark应用程序和整个基础结构的运行状况的所有信息。

您的要求更多是自定义实现。不确定你是否能做到这一点。有关导出指标的一些信息是here

您可以收集的所有指标都包括作业开始,作业结束,任务开始和任务结束。您可以查看文档here

希望以上信息可以指导您找到更好的解决方案