Spark Streaming自定义采集器

本文介绍了如何在Spark Streaming中自定义Receiver来接收特定类型的数据源。通过继承Receiver基类并重写onStart和onStop方法,实现数据接收和存储。当接收到'end'信号时,接收停止。提供了代码实现和测试步骤。
摘要由CSDN通过智能技术生成

一、Spark 自定义Receiver

SparkStreaming 能够接收任意类型的流式数据,不单单只是内建的Flume,Kafka,Kinesis,files,sockets等等。当然若要支持此种数据,则需要开发者自定义程序来接受对应的数据源。本文以下部分就是要实现自定义的Receiver

二、自定义Receiver

 声明一个receiver类,通常需要继承原有的基类,在这里需要继承自Receiver,该基类有两个方法需要重写分别是:
1. onstart() 接收器开始运行时触发方法,在该方法内需要启动一个线程,用来接收数据。
2. onstop() 接收器结束运行时触发的方法,在该方法内需要确保停止接收数据。
当然在接收数据流过程中也可能会发生终止接收数据的情况,这时候onstart内可以通过isStoped()来判断 ,是否应该停止接收数据
 数据存储。一旦接收完数据,则必须要进行数据的存储,并交由SparkStreaming 来处理,Spark以store(data)方法来支持此流程。由于数据格式的不同,当然store方法必须要支持各种类型的数据存储。store方法是以一次存储一条记录或者一次性收集全部的序列化对象。

三、代码实现

采集端口内输入内容,接收到 ‘‘end’’ 停止

package sparkStreaming

import java.io.{
   BufferedReader, InputStreamReader}

import org.apache.spark.storage.StorageLevel
import org.apache.spark.streaming.receiver.Receiver


class myReceiver(host:String,port:Int) extends Receiver[String](StorageLevel.MEMORY_ONLY){
   
  var socket
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值