spark-streaming连接消费nsq
目的
使用 NSQ作为消息流
使用 spark-streaming 进行消费
对数据进行清洗后,保存到hive仓库中
连接方案
1、编写Spark Streaming Custom Receivers(spark-streaming 自定义接收器),详细见文档
2、使用 nsq 官方提供的Java程序连接包 JavaNSQClient ,详细见文档
详细代码
自定义连接器
ReliableNSQReceiver.scala
import com.github.brainlag.nsq.callbacks.NSQMessageCallback
import com.github.brainlag.nsq.lookup.DefaultNSQLookup
import com.github.brainlag.nsq.{NSQConsumer, NSQMessage}
import org.apache.spark.internal.Logging
import org.apache.spark.storage.StorageLevel
import org.apache.spark.streaming.receiver.Receiver
class MessageCallbacks(store_fun:String => Unit) extends NSQMessageCallback with Logging {
def message(message: NSQMessage): Unit ={
val s = new String(message.getMessage())
store_fun(s)