spark streaming案例整理

本文介绍了一个使用Scala编写的简单模拟程序,该程序通过指定端口发送随机生成的字母数据,并展示了如何利用Spark Streaming接收并处理这些数据。此外,还提供了一种使用netcat直接发送内容的方法。

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

scala程序实现,接收一个端口发来的信息:端口信息使用模拟程序来实现一个端口发来的信息。
代码如下:

程序生成A-G的随机字母


 
importjava.io.PrintWriter
importjava.net.ServerSocket

classLoggerSimulation {
 
}
object LoggerSimulation{
  /**
    * 生成一个字母
    * @param 字母的下标
    * @return  生成的字母
    */
  def gennerateContent(index:Int):String = {
    importscala.collection.mutable.ListBuffer
    val charList = ListBuffer[Char]();
    for(i<-65to90){
      charList += i.toChar
    }
    val charArray = charList.toArray
    charArray(index).toString();
  }
 
  /**
    * 生成随机下标
    * @return 返回一个下标
    */
  def index = {
    importjava.util.Random
    val rdm = newRandom()
    rdm.nextInt(7)
  }
 
  
  def main(args: Array[String]): Unit = {
  
 
    val listener = newServerSocket(9090) //输入端口号
    println("已经做好连接的准备-------")
    while(true){
      val socket = listener.accept()
      newThread(){
        override def run(): Unit = {
          println("Got client connected from:"+socket.getInetAddress)
          val out = newPrintWriter(socket.getOutputStream,true)
          while(true){
            Thread.sleep(2000) //间隔时间
            val content = gennerateContent(index)
            println(content)
            out.write(content+"\n")
            out.flush()
          }
          socket.close()
        }
      }.start()
    }
  }
}



spark程序


importorg.apache.spark.storage.StorageLevel
importorg.apache.spark.streaming.{Seconds, StreamingContext}
importorg.apache.spark.{SparkConf, SparkContext}

classNetWorkWordCount {
 
}
object NetWorkWordCount{
  def main(args: Array[String]): Unit = {
 
 
    val config = newSparkConf().setAppName("NetWorkWordCount").setMaster("local");
    val ssc = newStreamingContext(config,Seconds(5)); //多长时间为间隔
    val lines = ssc.socketTextStream("10.1.31.12",8899,StorageLevel.MEMORY_ONLY_SER) //主机和端口地址
    val words = lines.flatMap(line => line.split(" "));
    val wordCount = words.map(x=>(x,1)).reduceByKey(_+_);
    wordCount.print()
    ssc.start();
    ssc.awaitTermination();
  }
}

另一种方式为

打开一个终端,打开一个终端,输入 命令 nc -lk 9999   然后输入内容即可


http://www.jianshu.com/p/59733597d448 挺详细的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值