SparkStreaming简单例子

◆ 构建第一个Streaming程序: (wordCount) 

  ◆ Spark Streaming 程序最好以使用Maven或者sbt编译出来的独立应用的形式运行。

  ◆ 准备工作:
  1.引入Spark Streaming的jar
  2.scala流计算import声明
  import org.apache.spark.streaming.StreamingContext
  import org.apache.spark.streaming.StreamingContext._
  import org.apache.spark.streaming.dstream.DStream
  import org.apache.spark.streaming.Duration
  import org.apache.spark.streaming.Seconds

1.初始化StreamingContext对象

   //创建一个本地StreamingContext两个工作线程和批间隔1秒。
   val conf = new SparkConf()
   conf.setMaster(“local[2]")
   conf.setAppName(“ NetworkWordCount")
   val ssc = new StreamingContext(conf, Seconds(1))

2.获取DStream对象 

  //创建一个连接到主机名的DStream,像localhost:9999

   val lines = ssc.socketTextStream("localhost", 9999)

3.操作DStream对象

  //将每一行接收到的数据通过空格分割成单词

  val words = lines.flatMap(_.split(" “))
  //导入StreamingContext中的隐式转换
  import org.apache.spark.streaming.StreamingContext._

   // 对每一批次的单词进行转化求和

  val pairs = words.map(word => (word, 1))
  val wordCounts = pairs.reduceByKey(_ + _)
  // 每个批次中默认打印前十个元素到控制台
  wordCounts.print()

4.启动流处理程序

  ssc.start// 开始计算

  ssc.awaitTermination() // 等待计算终止

  ssc.stop() //结束应用

启动网络端口,模拟发送数据

  1.借助于nc命令,手动输入数据

    Linux/Mac :nc

    Windows:cat

      nc -lk 9999

  2.借助于代码,编写一个模拟数据发生器  

package com.briup.streaming

import java.io.PrintWriter
import java.net.ServerSocket import scala.io.Source object MassageServer { // 定义随机获取整数的方法
def index(length: Int) = {
import java.util.Random
val rdm = new Random
rdm.nextInt(length)
} def main(args: Array[String]) {
println("模拟数据器启动!!!")
// 获取指定文件总的行数
val filename ="Spark/ihaveadream.txt";
val lines = Source.fromFile(filename).getLines.toList
val filerow = lines.length // 指定监听某端口,当外部程序请求时建立连接
val serversocket = new ServerSocket(9999); while (true) {
//监听9999端口,获取socket对象
val socket = serversocket.accept()
// println(socket)
new Thread() {
override def run = {
println("Got client connected from: " + socket.getInetAddress) val out = new PrintWriter(socket.getOutputStream(), true) while (true) {
Thread.sleep(1000)
// 当该端口接受请求时,随机获取某行数据发送给对方
val content = lines(index(filerow)) println (content) out.write(content + '\n') out.flush()
}
socket.close()
}
}.start()
}
}
}

模拟发送数据

注意事项:

◆ 1.启动 Spark Streaming 之前所作的所有步骤只是创建了执行流程, 程序没有真正
连接上数据源,也没有对数据进行任何操作,只是设定好了所有的执行计划
◆ 2.当 ssc.start()启动后程序才真正进行所有预期的操作
◆ 3.执行会在另一个线程中进行,所以需要调用awaitTermination来等待流计算完成
◆ 4.一个Streaming context只能启动一次
◆ 5.如果模式是本地模式,那么请务必设置local[n] ,n>=2   1个用于接收,1个用于处理


package com.briup.streaming

import org.apache.log4j.{Level, Logger}
import org.apache.spark.SparkConf
import org.apache.spark.streaming.{Duration, StreamingContext} object MyTestOldAPI {
def main(args: Array[String]): Unit = {
//设置日志级别
Logger.getLogger("org").setLevel(Level.WARN) //1 获取DS
val conf = new SparkConf().setAppName("MyTestOldAPI").setMaster("local[*]")
val dss = new StreamingContext(conf, Duration(1000))
val ds = dss.socketTextStream("localhost", 9999) //2 逻辑处理 //统计
val res = ds.filter(_ != "").flatMap(_.split(" ")).map(word => (word, 1)).reduceByKey(_ + _) res.print() //3 开启实时处理任务
dss.start()
dss.awaitTermination()
dss.stop()
}
}

SparkStreaming简单例子(oldAPI)的更多相关文章

  1. Hibernate4.2.4入门(一)——环境搭建和简单例子

    一.前言 发下牢骚,这段时间要做项目,又要学框架,搞得都没时间写笔记,但是觉得这知识学过还是要记录下.进入主题了 1.1.Hibernate简介 什么是Hibernate?Hibernate有什么用? ...

  2. AgileEAS.NET SOA 中间件平台.Net Socket通信框架-简单例子-实现简单的服务端客户端消息应答

    一.AgileEAS.NET SOA中间件Socket/Tcp框架介绍 在文章AgileEAS.NET SOA 中间件平台Socket/Tcp通信框架介绍一文之中我们对AgileEAS.NET SOA ...

  3. spring mvc(注解)上传文件的简单例子

    spring mvc(注解)上传文件的简单例子,这有几个需要注意的地方1.form的enctype=”multipart/form-data” 这个是上传文件必须的2.applicationConte ...

  4. ko 简单例子

    Knockout是在下面三个核心功能是建立起来的: 监控属性(Observables)和依赖跟踪(Dependency tracking) 声明式绑定(Declarative bindings) 模板 ...

  5. mysql定时任务简单例子

    mysql定时任务简单例子 ? 1 2 3 4 5 6 7 8 9     如果要每30秒执行以下语句:   [sql] update userinfo set endtime = now() WHE ...

  6. java socket编程开发简单例子 与 nio非阻塞通道

    基本socket编程 1.以下只是简单例子,没有用多线程处理,只能一发一收(由于scan.nextLine()线程会进入等待状态),使用时可以根据具体项目功能进行优化处理 2.以下代码使用了1.8新特 ...

  7. 一个简单例子:贫血模型or领域模型

    转:一个简单例子:贫血模型or领域模型 贫血模型 我们首先用贫血模型来实现.所谓贫血模型就是模型对象之间存在完整的关联(可能存在多余的关联),但是对象除了get和set方外外几乎就没有其它的方法,整个 ...

  8. [转] 3个学习Socket编程的简单例子:TCP Server/Client, Select

    以前都是采用ACE的编写网络应用,最近由于工作需要,需要直接只用socket接口编写CS的代码,重新学习这方面的知识,给出自己所用到的3个简单例子,都是拷贝别人的程序.如果你能完全理解这3个例子,估计 ...

  9. jsonp的简单例子

    jsonp的简单例子 index.html <!DOCTYPE html> <html> <head> <meta charset="UTF-8&q ...

随机推荐

  1. LQB201804第几个幸运数

    我自己一开始想的差不多,但是好像想得是vector+sort.... 直接用set它不香吗? 还有就是寻找下一个数的时候,没有用upperbound,,, 我想的大概是遍历一遍(就是用for对这个函数 ...

  2. Markdown简洁语法说明

    学于黑马和传智播客联合做的教学项目 感谢 黑马官网 传智播客官网 微信搜索"艺术行者",关注并回复关键词"乐优商城"获取视频和教程资料! b站在线视频 0.前言 ...

  3. 7.11 NOI模拟赛 qiqi20021026的T1 四个指针莫队 trie树

    LINK:qiqi20021026的T1 考场上只拿到了50分的\(nq\)暴力. 考虑一个区间和一个区间配对怎么做 二分图最大带权匹配复杂度太高. 先考虑LCS的问题 常见解决方法是后缀数组/tri ...

  4. 4.17 斐波那契数列 K维斐波那契数列 矩阵乘法 构造

    一道矩阵乘法的神题 早上的时候我开挂了 想了2h想出来了. 关于这道题我推了很多矩阵 最终推出两个核心矩阵 发现这两个矩阵放在一起做快速幂就行了. 当k==1时 显然的矩阵乘法 多开一个位置维护前缀和 ...

  5. jar包冲突解决

    背景: 新需求需要引入新jar包,引入后发现本地启动没有报错,发到测试环境提示某个bean无法创建,nested exception is java.lang.VerifyError: Bad typ ...

  6. canvas小画板--(1)平滑曲线

    功能需求 项目需求:需要实现一个可以自由书写的小画板 简单实现 对于熟悉canvas的同学来说,这个需求很简单,短短几十行代码就能实现: <!doctype html> <html& ...

  7. 学Java必看!零基础小白再也不用退缩了

    程序员们!请往这儿看 对于JAVA的学习,可能你还会有许多的顾虑 不要担心 接着往下看吧 学Java前 一.数学差,英语也不好是不是学不好Java? 答案是:是~ 因为你在问这个问题的时候说明你对自己 ...

  8. Python预测2020高考分数和录取情况

    “迟到”了一个月的高考终于要来了. 很多人学习python,不知道从何学起.很多人学习python,掌握了基本语法过后,不知道在哪里寻找案例上手.很多已经做案例的人,却不知道如何去学习更加高深的知识. ...

  9. 100例Python代码带你从入门到进阶!

    以下所有代码全都至少运行一遍,确保可复现.易于理解.逐步完成入门到进阶的学习. 此教程经过我 反复打磨多遍 ,经常为此熬夜,真心不易,文章比较长,看完有用,帮我点个在看或分享支持. 教程包括 62 个 ...

  10. 手敲代码太繁琐?“拖拉拽”式Python编程惊艳到我了

    Python到底有多火,从后端开发到前端开发:从金融量化分析到大数据:从物联网到人工智能,都有Python的踪迹. 很多人学习python,不知道从何学起.很多人学习python,掌握了基本语法过后, ...