数智资源网
首页 首页 大数据 查看内容

如何使用Spark侦听器?

木马童年 2020-10-12 19:42 17 0

在2019年最后一个季度,我使用Spark开发了元数据驱动的提取引擎。框架/库具有多种模式,可以满足多种源和目标组合。例如,有两种模式可用于将平面文件加载到云存储(一种模式用于将数据加载到AWS S3,另一种模式用于 ...

在2019年最后一个季度,我使用Spark开发了元数据驱动的提取引擎。框架/库具有多种模式,可以满足多种源和目标组合。例如,有两种模式可用于将平面文件加载到云存储(一种模式用于将数据加载到AWS  S3,另一种模式用于将数据加载到Azure Blob)。

随着数据加载理念从“提取转换加载”(ETL)变为“ 提取加载转换(ETL)”,这样的框架非常有用,因为它减少了设置提取作业所需的时间。

任何摄取引擎的一个重要方面是要知道从给定的源读取了多少记录并将其写入目的地。通常,想到的方法是对DataFrame执行计数操作已加载。这将为我们提供从源加载的记录数。在将数据写入存储的情况下,我们需要将数据加载到另一个DataFrame中并对其进行计数。

但是,对DataFrame进行计数操作可能会很昂贵。有其他选择吗?事实证明,有。另一种方法是注册Spark事件。这是通过从SparkListener类扩展我们的类并覆盖OnStageCompleted方法或OnTaskEnd方法(取决于我们要执行的操作)来完成的。

每当活动完成时,Spark都会OnStageCompleted在已注册的侦听器上调用该方法。这种方法使我们能够跟踪执行时间和执行者占用的CPU时间。任务完成后,Spark会调用OnTaskEndSpark侦听器上的方法。此方法可用于确定读取和写入的记录数。

为了跟踪执行时间,读取的记录数和写入的记录数,我在本文中介绍了一些帮助程序类。要注册活动完成任务,您需要从StageCompletedEventConsumer特征中派生您的课程。要注册读取计数,您需要从RecordsLoadedEventConsumer特征导出类。

要注册写计数,您需要从RecordsWrittenEventConsumer特征中派生您的类。从给定的特征派生类之后,您需要将该类添加到各自的管理器类中。事件发生时,Spark将调用管理器类,该类又将通知所有已注册的侦听器。


数据驱动 云存储
0
为您推荐
HIVE数据仓库完美实战课程,资源教程下载

HIVE数据仓库完美实战课程,资源教程下载

课程名称【快速掌握HIVE视频教程】HIVE数据仓库完美实战课程课程目录├第一周:hive基…...

尚硅谷大数据Flink技术与实战,资源教程下载

尚硅谷大数据Flink技术与实战,资源教程下载

课程名称尚硅谷大数据Flink技术与实战课程目录理论_Flink基础 001__Flink理论_Flink…...

廖雪峰-2019大数据分析精品资料价值1980元,资源教程下载

廖雪峰-2019大数据分析精品资料价值1980元,资源教程

课程介绍:廖雪峰大神历时3个月打磨出来的《数据分析必备技能》的视频学习资料,由浅…...

尚硅谷-大数据项目之电商数仓教程下载

尚硅谷-大数据项目之电商数仓教程下载

课程介绍:本课程以国内电商巨头实际业务应用场景为依托,对电商数仓的常见实战指标以…...