Spark Streamming 基本输入流(二) :Socket

  Spark Streamming 可以通过socket 进行数据监听。

  socket的输入方可以通过nc 或者自己开发nc功能的程序。

  1、系统自带的nc

    su root 

    a

    yum install -y nc 安装nc

    nc -lk 22222  就代表nc对22222端口进行监听。

    

  2、自己编写nc程序

    下面程序是不停给master 22222 端口写入行数据。

    val words = "hello spark storm hive java hadoop hbase hello money scala python".split(" ")
    val n = words.size
    val ra = new Random()
    val hostname = "master"
    val port = 22222

    val ss = new ServerSocket(port)
    val socket = ss.accept()
    println("connect to host:" + socket.getInetAddress)
    while(true){
    val out = new PrintWriter(socket.getOutputStream)
    out.println(words(ra.nextInt(n)) + " " + words(ra.nextInt(n)))
    out.flush()
    Thread.sleep(100)

  3、编写spark streamming 处理程序。

    

  object SocketDS {
    def main(args: Array[String]): Unit = {
    val conf = new SparkConf().setAppName("SocketDS").setMaster("local[2]")
    val ssc = new StreamingContext(conf,Seconds(10))
    ssc.sparkContext.setLogLevel("warn")

    val hostname = "master"
    val port = 22222
    val lines = ssc.socketTextStream(hostname ,port)
    val words = lines.flatMap(_.split("\\s+"))
    words.transform(wRDD=>{
  val wordCount = wRDD.map((_,1)).reduceByKey(_+_).sortBy(_._2,false)
  wordCount
  }).print()

  ssc.start()
  ssc.awaitTermination()
  }

  4、nc端 输入socket内容 进行监控

    hello   spark

    hello   hadoop

    hello  socket

    hello  java

    hello   scala

  5、先开启spark Streamming处理程序,再开启nc或者ncsocket,运行结果如下。

    nc -lk 22222给master 22222发送数据,

    

    通过自己编写的nc socket程序,随机组合给master 22222发送行数据。

    

    spark streamming 程序接收并处理后的结果。

    

    

猜你喜欢

转载自www.cnblogs.com/BrentBoys/p/10797480.html