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. wcf 基本配置

    <system.serviceModel> <services> <service name="ServiceUpdater.ServiceUpdate&quo ...

  2. Dell解决黑苹果网卡(BCM94352ZAE/DW1560)怎么都打不开WiFi

    Dell解决黑苹果网卡(BCM94352ZAE/DW1560)怎么都打不开WiFi 2017年10月20日17:41:00 by SemiconductorKING 本来觉得驱动这个网卡不是个问题,以 ...

  3. 常用软件下载开发环境七牛镜像Java、Node、Mongo

    [jdk1.8] Linux:http://soft.yzeng.cc/jdk18/jdk-8u202-linux-x64.tar.gz Windows:http://soft.yzeng.cc/jd ...

  4. golang学习之mgo操作mongodb

    mgo是mongodb的golang驱动,测试代码: // mgotest project main.go package main import ( "fmt" "ti ...

  5. css三栏布局方案整理

    日常开发中,经常会用到css三栏布局,现将工作中常用的css 三栏布局整理如下: 什么是三栏布局: 三栏布局,顾名思义就是两边固定,中间自适应. 一. float布局 <!DOCTYPE htm ...

  6. SpringMVC 工作流程

    版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/baidu_36697353/article/details/64444147 SpringMVC 工 ...

  7. C 堆内存管理

    在Win32 程序中每个进程都占有4GB的虚拟地址空间,这4G的地址空间内部又被分为代码段,全局变量段堆段和栈段,栈内存由函数使用,用来存储函数内部的局部变量,而堆是由程序员自己申请与释放的,系统在管 ...

  8. csharp: datagridview Convert csv file

    /// <summary> /// 保存文件 /// 涂聚文 /// 2014-08-29 /// Geovin Du /// </summary> /// <param ...

  9. zookeeper安装及使用

    0. 下载并安装 1. 开机启动 cd  /etc/rc.d/init.d touch zookeeper vi zookeeper #!/bin/bash #chkconfig #descripti ...

  10. 理解Canvas原理

    Canvas原理 Canvas我们把它翻译成画布,从字面意思我们就可以知道,不就是可以在上面画东西的布吗.好像很简单,没什么好说的.先看图: 从这几幅图我们可以看到以下几点: 1.每个小方格我们可以看 ...