本文针对spark 2.0+版本

概述

spark 提供了一系列整个任务生命周期中各个阶段变化的事件监听机制,通过这一机制可以在任务的各个阶段做一些自定义的各种动作。SparkListener便是这些阶段的事件监听接口类 通过实现这个类中的各种方法便可实现自定义的事件处理动作。

自定义示例代码

import org.apache.spark.internal.Logging
import org.apache.spark.scheduler.{SparkListenerApplicationStart, SparkListenerApplicationEnd, SparkListener}/*** Created by silent on 2019/1/11.*/
class MySparkAppListener extends SparkListener with Logging {override def onApplicationStart(applicationStart: SparkListenerApplicationStart): Unit = {val appId = applicationStart.appIdlogInfo("***************************************************" + appId.get)}override def onApplicationEnd(applicationEnd: SparkListenerApplicationEnd): Unit = {logInfo("************************ app end time ************************ " + applicationEnd.time)}
}

主函数运行示例

object Main extends App {val spark = SparkSession.builder().appName("main").master("local[2]").config("spark.extraListeners","com.moxiu.silent.SparkListenerDemo.MySparkAppListener") .getOrCreate()//spark.sparkContext.addSparkListener(new MySparkAppListener)
     spark.stop()
}

说明:

自定义监听sparListener后的注册方式有两种:

方法1:conf配置中指定

//spark2.0以下
val sparkConf=new SparkConf()
sparkConf.set("spark.extraListeners","org.apache.spark.MySparkAppListener")// spark2.0+
val spark = SparkSession.builder().appName("main").master("local[2]").config("spark.extraListeners","com.moxiu.silent.SparkListenerDemo.MySparkAppListener").getOrCreate()

方法2:sparkContext 类中指定

//spark2.0前
val sc = new SparkContext(sparkConf)
sc.addSparkListener(new MySparkAppListener)//spark2.0+
spark.sparkContext.addSparkListener(new MySparkAppListener)

sparkListerner 代码记录

//SparkListener 下各个事件对应的函数名非常直白,即如字面所表达意思。
//想对哪个阶段的事件做一些自定义的动作,变继承SparkListener实现对应的函数即可abstract class SparkListener extends SparkListenerInterface {//阶段完成时触发的事件override def onStageCompleted(stageCompleted: SparkListenerStageCompleted): Unit = { }//阶段提交时触发的事件override def onStageSubmitted(stageSubmitted: SparkListenerStageSubmitted): Unit = { }//任务启动时触发的事件override def onTaskStart(taskStart: SparkListenerTaskStart): Unit = { }//下载任务结果的事件override def onTaskGettingResult(taskGettingResult: SparkListenerTaskGettingResult): Unit = { }//任务结束的事件override def onTaskEnd(taskEnd: SparkListenerTaskEnd): Unit = { }//job启动的事件override def onJobStart(jobStart: SparkListenerJobStart): Unit = { }//job结束的事件override def onJobEnd(jobEnd: SparkListenerJobEnd): Unit = { }//环境变量被更新的事件override def onEnvironmentUpdate(environmentUpdate: SparkListenerEnvironmentUpdate): Unit = { }//块管理被添加的事件override def onBlockManagerAdded(blockManagerAdded: SparkListenerBlockManagerAdded): Unit = { }override def onBlockManagerRemoved(blockManagerRemoved: SparkListenerBlockManagerRemoved): Unit = { }//取消rdd缓存的事件override def onUnpersistRDD(unpersistRDD: SparkListenerUnpersistRDD): Unit = { }//app启动的事件override def onApplicationStart(applicationStart: SparkListenerApplicationStart): Unit = { }//app结束的事件 [以下各事件也如同函数名所表达各个阶段被触发的事件不在一一标注]override def onApplicationEnd(applicationEnd: SparkListenerApplicationEnd): Unit = { } override def onExecutorMetricsUpdate(executorMetricsUpdate: SparkListenerExecutorMetricsUpdate): Unit = { }override def onExecutorAdded(executorAdded: SparkListenerExecutorAdded): Unit = { }override def onExecutorRemoved(executorRemoved: SparkListenerExecutorRemoved): Unit = { }override def onExecutorBlacklisted(executorBlacklisted: SparkListenerExecutorBlacklisted): Unit = { }override def onExecutorUnblacklisted(executorUnblacklisted: SparkListenerExecutorUnblacklisted): Unit = { }override def onNodeBlacklisted(nodeBlacklisted: SparkListenerNodeBlacklisted): Unit = { }override def onNodeUnblacklisted(nodeUnblacklisted: SparkListenerNodeUnblacklisted): Unit = { }override def onBlockUpdated(blockUpdated: SparkListenerBlockUpdated): Unit = { }override def onOtherEvent(event: SparkListenerEvent): Unit = { }
}

转载于:https://www.cnblogs.com/yyy-blog/p/10253830.html

SparkListener监听使用方式及自定义的事件处理动作相关推荐

  1. SparkListener监听机制使用及自定义事件处理

    概述 Spark 提供了一系列整个任务生命周期中各个阶段变化的事件监听机制,通过这一机制可以在任务的各个阶段做一些自定义的各种动作.SparkListener便是这些阶段的事件监听接口类 通过实现这个 ...

  2. Arduino 利用串口缓冲区监听的方式读取数据

    Arduino 利用串口缓冲区监听的方式读取数据 相关篇<Arduino读取串口接收到的数据并发送数据> 利用串口缓冲区监听的方式读取数据,实现该功能依赖:serialEvent()此函数 ...

  3. android 实现自定义监听接口,Android在自定义类中实现自定义监听器方式

    Android在自定义类中实现自定义监听器方式 发布时间:2020-08-31 06:19:39 来源:脚本之家 阅读:203 作者:Simon_Qi 监听器可以说是Android开发中最常用的东西之 ...

  4. 安卓项目实战之强大的网络请求框架okGo使用详解(一):实现get,post基本网络请求,下载上传进度监听以及对Callback自定义的深入理解

    1.添加依赖 //必须使用 compile 'com.lzy.net:okgo:3.0.4'//以下三个选择添加,okrx和okrx2不能同时使用,一般选择添加最新的rx2支持即可 compile ' ...

  5. Android Button监听的方式

    Android Button的几种监听方式 1.一个Button对应一个监听 1)xml文件中绑定监听 <Buttonandroid:id="@+id/btn_test"an ...

  6. 【Flutter从入门到实战】 ⑨、滚动的Widget-ListView、GridView、SliverWidget、滚动的Widget的滚动监听的方式

    Flutter从入门到实战 一共分为23个系列 ①(Flutter.Dart环境搭建篇) 共3个内容 已更新 ②(Dart语法1 篇) 共4个内容 已更新 ③(Dart语法2 篇) 共2个内容 已更新 ...

  7. Android的事件处理——监听接口方式

    监听接口处理步骤: 1. 实现Listener接口 (1)定义Activity时实现接口 (2)定义内部类实现接口 (3)通过匿名内部类实现接口 2. View控件注册事件监听器 例:myButton ...

  8. java 自定义监听_Spring 中的自定义事件

    Spring 中的自定义事件 编写和发布自己的自定义事件有许多步骤.按照在这一章给出的说明来编写,发布和处理自定义 Spring 事件. 步骤 描述 1 创建一个名称为SpringExample的项目 ...

  9. java键盘监听wasd控制_dota2rpg自定义按键绑定及WASD移动的实现

    本文的目的是在DOTA2自定义游戏中实现一个WASD控制的8方向移动,如果你想实现的是4方向的,稍微修改一点点代码也可以做到. 通过本文,你也可以了解到DOTA2自定义按键的流程. 本文的所有代码你都 ...

最新文章

  1. 数字转换成字符串进行连接
  2. 在路上,继续就好了。。。。
  3. 从拟物到简约 ------谈网站设计风格的变革
  4. 将SQL-SERVER逆向工程导入Power-Design中并给表的字段添加注释
  5. 如何用stata画莫兰散点图_吃下这颗安利:STATA
  6. 1000+Redis实例,100+集群,Redis 在海量数据和高并发下的优化实践
  7. 吐槽下CSDN编辑器
  8. 2020-11-16梦笔记
  9. 重t2加权是什么意思_魔兽世界怀旧服:详解盗贼T2.5套装,别犹豫真香
  10. android 天气动态壁纸,动态桌面壁纸 安卓“墨迹天气”新版评测
  11. win10mysql服务器修改密码,Windows下mysql修改root密码的4种方法
  12. 使用python对图片进行压缩
  13. The system proxy was changed. Click to reenable capturing.
  14. Day 15 正则表达式
  15. 星起航:抖音小店如何提升店铺复购率
  16. 2022年交通工具公开拍卖市场研究报告
  17. keil如何添加h文件_被Keil坑了一天!实在太意外了!用Keil的来瞅瞅看
  18. 基于java的图书馆借阅管理系统设计(含源文件)
  19. 1002 写出这个数 (C语言实现)
  20. 数学竞赛(省一)、英语竞赛(国二)、数学建模(美M)参赛经验

热门文章

  1. 基于MC2302D的LED显示控制器
  2. 电信增值业务彩信平台模块
  3. PowerBuilder 软件加密实验
  4. Intel CPU的CPUID指令(转载)
  5. 第十一课用计算机写作教案,五年级下册计算机PowerPoint教案5篇【11-15课】
  6. 协会的会员单位宝付,受邀参加支付清算法务培训班
  7. 一起来飞车服务器维护到什么时候,《一起来飞车2》更新维护公告
  8. 顺丰快递单号查询接口物流路由跟踪信息快递鸟api对接教程
  9. 吴喆:全民K歌直播推荐系统详解
  10. 麒麟银河操作系统下的英伟达驱动出现如下错误