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 程序接收并处理后的结果。

    

    

Spark Streamming 基本输入流(二) :Socket的更多相关文章

  1. Spark Streamming 基本输入流I(-) :File/Hdfs

    Spark Streamming 基本输入流I(-):从文件中进行读取 文件读取1:本地文件读取 这里我只给出实现代码及操作步骤 1.在本地目录下创建目录,这里我们创建目录为~/log/ 2.然后手动 ...

  2. Spark面试题(二)

    首发于我的个人博客:Spark面试题(二) 1.Spark有哪两种算子? Transformation(转化)算子和Action(执行)算子. 2.Spark有哪些聚合类的算子,我们应该尽量避免什么类 ...

  3. linux内核中的文件描述符(二)--socket和文件描述符

    http://blog.csdn.net/ce123_zhouwei/article/details/8459730 Linux内核中的文件描述符(二)--socket和文件描述符 Kernel ve ...

  4. 二. Socket用法

    C/S通信架构中,客户端要主动与服务端建立连接,这个链接就是Socket套接字.服务端收到连接请求后,也会开启Socket记录与客户端的链接.C/S两端都要建路Socket才能正常收发数据. 一.构造 ...

  5. Spark读写Hbase的二种方式对比

    作者:Syn良子 出处:http://www.cnblogs.com/cssdongl 转载请注明出处 一.传统方式 这种方式就是常用的TableInputFormat和TableOutputForm ...

  6. Spark SQL概念学习系列之为什么使用 Spark SQL?(二)

    简单地说,Shark 的下一代技术 是Spark SQL. 由于 Shark 底层依赖于 Hive,这个架构的优势是对传统 Hive 用户可以将 Shark 无缝集成进现有系统运行查询负载. 但是也看 ...

  7. 【Spark篇】---Spark中transformations算子二

    一.前述 今天继续整理几个Transformation算子如下: mapPartitionWithIndex repartition coalesce groupByKey zip zipWithIn ...

  8. spark streaming 整合kafka(二)

    转载:https://www.iteblog.com/archives/1326.html 和基于Receiver接收数据不一样,这种方式定期地从Kafka的topic+partition中查询最新的 ...

  9. Spark 系列(十二)—— Spark SQL JOIN 操作

    一. 数据准备 本文主要介绍 Spark SQL 的多表连接,需要预先准备测试数据.分别创建员工和部门的 Datafame,并注册为临时视图,代码如下: val spark = SparkSessio ...

随机推荐

  1. Magento 2开发教程 - 如何添加新产品属性

    添加产品属性是一种在Magento 1 和 Magento 2最受欢迎的业务. 属性是解决许多与产品相关的实际任务的有力方法. 这是一个相当广泛的话题,但在这个视频中,我们将讨论添加一个下拉类型属性到 ...

  2. C# xml操作word-->word转2003xml

    1.第一步,准备word模版

  3. JVM(三) 垃圾回收时间点和垃圾收集器

      收集器组合章节来自第一篇参考文章,非原创,作者总结地非常好!          分代收集相关概念来自参考文章第二篇,非原创         第二篇参考资料的文章质量很高,推荐阅读! 分代收集(Ge ...

  4. js密码强度校验

    function AuthPasswd(string) { if(!string){ jQuery("#low").removeClass("org"); }) ...

  5. mac安装rz,sz文件操作指令包

    安装需要具备什么样的环境? 1.安装item2 iterm2是一个与terminal一样的指令窗口 item2 下载地址,​​http://iterm2.com/downloads.html,下载后解 ...

  6. JQ(查找)

    1.由下级到上级再到下级 var aa=$("td:eq(0)").parents("tr").find("td:eq(1)"); 2.

  7. Browser对象之Window对象

    对象属性 对象方法 setInterval() 按照指定的周期(以毫秒计)来调用函数或计算表达式. setInterval() 方法可按照指定的周期(以毫秒计)来调用函数或计算表达式. setInte ...

  8. 对Mybatis的初步认识

    1.认识Mybatis MyBatis 是支持普通 SQL 查询,存储过程和高级映射的优秀持久层框架. MyBatis 消除了几乎所有的 JDBC 代码和参数的手工设置以及对结果集的检索. MyBat ...

  9. HDU 1561 The more, The Better 经典树形DP

    The more, The Better Time Limit: 6000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Oth ...

  10. Grunt usemin前端自动化打包流程

    前端优化是尽量减少http请求,所以我们需要尽量合并压缩文件,然后调用压缩后的文件,比如多个css文件压缩成一个,多个js文件合并压缩等,usemin能够自动在html中使用压缩后的文件,达到上面的目 ...