Spark通过netcat来监听端口访问数据

首先需要安装好netcat,在centos中没有 -k 参数的命令。

 

第一步:完成spark的scala程序

package com.lxb.sparkStreaming

import org.apache.spark.streaming.dstream.{DStream, ReceiverInputDStream}
import org.apache.spark.{SparkConf, SparkContext}
import org.apache.spark.streaming.{Seconds, StreamingContext}

object SparkStreaming{
  def main(args: Array[String]): Unit = {


    val conf: SparkConf = new SparkConf().setMaster("local[*]").setAppName("SparkStreaming")
    //def this(sparkContext : org.apache.spark.SparkContext,
    // batchDuration : org.apache.spark.streaming.Duration)
    // 第一个参数是:SparkConf,第二个参数是:计算周期
    val streamingContext: StreamingContext = new StreamingContext(conf, Seconds(5))
    // 获取数据
    val socketLine: ReceiverInputDStream[String] = streamingContext.socketTextStream("node11", 9999)
    // 将获取的数据进行扁平化处理
    val wordDSStream: DStream[String] = socketLine.flatMap(line => line.split(" "))
    // 转化结构方便进行处理
    val mapStream: DStream[(String, Int)] = wordDSStream.map((_, 1))
    //  聚合操作
    val sumNum: DStream[(String, Int)] = mapStream.reduceByKey(_ + _)
    sumNum.print()

    // 启动采集器
    streamingContext.start()
    // 采集器停止工作,driver也停止工作
    streamingContext.awaitTermination()


  }
}

 

第二步:在linux中开始监听一个端口

[bing@node11 root]$ nc -l -p 9999

hello hi


并且可以发送消息,在本地的程序中可以收得到。

Spark通过netcat来监听端口访问数据_第1张图片

你可能感兴趣的:(spark)