How to send a phone message when a spark application is end.

本文介绍如何在Spark应用程序结束时通过自定义监听器发送手机消息通知。此方法对于流处理应用尤为重要,可以帮助开发者及时了解应用运行状态。文章详细解释了实现步骤及核心代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Sometimes, we want to get a message when spark application is end. The application end event is especially import for streaming application, because it represents there is some error occurred.

To embed the service to application, SendMsgOnAppEndListener class should be imported first.

  import org.apache.spark.plugin.xbu.bigdata.SendMsgOnAppEndListener.

Secondly, add the listener to spark context.
Parameter description:
url: the phone message url.
phoneList: the phone list to whom the message be send when the application is end, separated by common character.
msg: the message .

 val sc : SparkContext = new SparkContext(sparkConf);
 sc.addSparkListener(new SendMsgOnAppEndListener(
    url = "http://server:port/msg/sendmsg", 
    phoneList = "xxxxxx", 
    msg = "TestSendMsgOnAppEndListener error"))

The source of SendMsgOnAppEndListener:

package org.apache.spark.plugin.xbu.bigdata

import org.apache.spark.scheduler._
import org.apache.http.impl.client.DefaultHttpClient
import org.apache.http.message.BasicNameValuePair
import org.apache.http.client.methods.HttpPost
import org.apache.http.NameValuePair
import org.apache.http.client.entity.UrlEncodedFormEntity
import java.util.ArrayList
/**
  * Created by houzhizhen on 17-5-2.
  */
class SendMsgOnAppEndListener(val url : String = "http://yq01-sw-hds12.yq01.baidu.com:8001/msg/sendmsg",val phoneList: String, val msg: String)  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 = ???

  override def onJobStart(jobStart: SparkListenerJobStart): Unit = ???

  override def onJobEnd(jobEnd: SparkListenerJobEnd): Unit = ???

  override def onEnvironmentUpdate(environmentUpdate: SparkListenerEnvironmentUpdate): Unit = ???

  override def onBlockManagerAdded(blockManagerAdded: SparkListenerBlockManagerAdded): Unit = ???

  override def onBlockManagerRemoved(blockManagerRemoved: SparkListenerBlockManagerRemoved): Unit = ???

  override def onUnpersistRDD(unpersistRDD: SparkListenerUnpersistRDD): Unit = ???

  override def onApplicationStart(applicationStart: SparkListenerApplicationStart): Unit = ???

  override def onApplicationEnd(applicationEnd: SparkListenerApplicationEnd): Unit = {

    val httpClient = new DefaultHttpClient();
    val httppost = new HttpPost(url)
    val formparams = new ArrayList[NameValuePair]()
    formparams.add(new BasicNameValuePair("phonelist", phoneList))
    formparams.add(new BasicNameValuePair("msg", msg))
    val uefEntity = new UrlEncodedFormEntity(formparams, "UTF-8")
    httppost.setEntity(uefEntity)
    httpClient.execute(httppost);

  }

  override def onExecutorMetricsUpdate(executorMetricsUpdate: SparkListenerExecutorMetricsUpdate): Unit = ???

  override def onExecutorAdded(executorAdded: SparkListenerExecutorAdded): Unit = ???

  override def onExecutorRemoved(executorRemoved: SparkListenerExecutorRemoved): Unit = ???

  override def onBlockUpdated(blockUpdated: SparkListenerBlockUpdated): Unit = ???

  override def onOtherEvent(event: SparkListenerEvent): Unit = ???
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值