简介

sparkStream官网:http://spark.apache.org/docs/latest/streaming-programming-guide.html#overview

sparkStream是构建在spark core之上的实时流处理框架,它支持很多的数据源,如:

你可以从kafka等各种数据源中实时获取数据流,然后经过spark计算,持久化或者实时的dashBoard展示。

sparkStream的实时计算其实也可以称为微批处理计算,它将数据流按照一定的时间段分割成小批的数据,然后将对数据流的操作转换为对RDD的操作,整个流计算的中间结果进行叠加存储到内存或者外部设备,如图:

代码示例

下面将使用tcp socket作为数据源,每隔1秒钟发送字符数据。sparkstream将在启动以后,将收集10秒的数据作为一个批数据进行统计处理,代码如下:

import java.net.ServerSocket

import org.apache.spark.streaming.{Seconds, StreamingContext}
import org.apache.spark.{SparkConf, SparkContext} /**
* @Description sparkStream demo
* @Author lay
* @Date 2018/12/08 21:43
*/
object SparkStreamDemo {
var conf: SparkConf = _
var sc: SparkContext = _
var ssc: StreamingContext = _ def init(): Unit = {
conf = new SparkConf().setAppName("spark stream demo").setMaster("local[2]")
sc = new SparkContext(conf)
sc.setLogLevel("warn")
// 时间片为10秒钟
ssc = new StreamingContext(sc, Seconds(10))
} def main(args: Array[String]): Unit = {
// 初始化socket流
initSocketStream()
// 初始化SparkStream
init()
// 从socket获取DStream
val lines = ssc.socketTextStream("localhost", 8888)
// 统计字数
val wordCount = lines.flatMap(x => x.split(" ")).map(x => (x, 1)).reduceByKey(_+_)
// 打印结果
wordCount.print()
// 启动
ssc.start()
println("spark stream started")
} def initSocketStream(): Unit = {
new Thread(new Runnable {
override def run(): Unit = {
val serverSocket = new ServerSocket(8888)
val socket = serverSocket.accept()
println("accepted")
for (i <- 1 to 10) {
val text = "what is this\n"
socket.getOutputStream.write(text.getBytes("utf-8"))
Thread.sleep(1000)
}
println("waiting")
Thread.sleep(50000)
socket.close()
serverSocket.close()
println("closed")
}
}).start()
println("thread started")
}
}

注意:

1)这里的master设置为"local[2]",是因为spark起码需要两个线程,一个线程用来接收数据,另一个线程用来处理数据。

2)"what is this\n"这里加了一个'\n'字符,是因为字节流的接收将会以这个字符作为分隔符。

你会看到类似如下的打印:

-------------------------------------------
Time: 1544281700000 ms
-------------------------------------------
(this,10)
(is,10)
(what,10)

九、sparkStream的scala示例的更多相关文章

  1. IntelliJ IDEA安装scala插件并创建scala示例

    1.http://blog.csdn.net/a2011480169/article/details/52712421 2.http://blog.csdn.net/stark_summer/arti ...

  2. 使用函数式编程消除重复无聊的foreach代码(Scala示例)

    摘要:使用Scala语言为例,展示函数式编程消除重复无聊的foreach代码. 难度:中级 概述 大多数开发者在开发生涯里,会面对大量业务代码.而这些业务代码中,会发现有大量重复无聊的 foreach ...

  3. 编程中的链式调用:Scala示例

    编程中的链式调用与Linux Shell 中的管道类似.Linux Shell 中的管道 ,会将管道连接的上一个程序的结果, 传递给管道连接的下一个程序作为参数进行处理,依次串联起N个实用程序形成流水 ...

  4. 混合使用ForkJoin+Actor+Future实现一千万个不重复整数的排序(Scala示例)

    目标       实现一千万个不重复整数的排序,可以一次性加载到 2G 的内存里. 本文适合于想要了解新语言 Scala 并发异步编程框架 Akka, Future 的筒鞋. 读完本文后,将了解如何综 ...

  5. 十一、spark SQL的scala示例

    简介 spark SQL官网:http://spark.apache.org/docs/latest/sql-programming-guide.html sparkSQL是构建在sparkCore之 ...

  6. 十、spark graphx的scala示例

    简介 spark graphx官网:http://spark.apache.org/docs/latest/graphx-programming-guide.html#overview spark g ...

  7. Chrome浏览器扩展开发系列之十九:扩展开发示例

    翻译总结了这么多的官网内容,下面以一款博主开发的“沪深股票价格变化实时追踪提醒”软件为例,介绍Chrome浏览器扩展程序的开发,开发环境为Eclipse IDE+Chrome Browser. “沪深 ...

  8. 060 SparkStream 的wordcount示例

    1.SparkStream 入口:StreamingContext 抽象:DStream 2.SparkStreaming内部原理 当一个批次到达的时候,会产生一个rdd,这个rdd的数据就是这个批次 ...

  9. 十二、spark MLlib的scala示例

    简介 spark MLlib官网:http://spark.apache.org/docs/latest/ml-guide.html mllib是spark core之上的算法库,包含了丰富的机器学习 ...

随机推荐

  1. Android Studio如何用真机调试

    1,在真机中设置USB调试模式打开,具体:“设置”->“应用程序”->“开发”->“USB调试”. 2,安装安卓的USB驱动,如果按照不好,那么去下载一个豌豆荚,它会帮你正确安装你的 ...

  2. 微信小程序—相对路径和绝对路径

    一.绝对路径: 以“/”开头代表根目录, /ada/like/index 二.相对路径 ../../ada/like/index 或者: ada/like/index

  3. MongoDB学习笔记之Mongoose的使用

    http://blog.csdn.net/sinat_25127047/article/details/50560167

  4. 【vim】搜索与替换

    1. 搜索 命令 功能 备注 * 向下搜索光标所在处的词 n下一个,N上一个 # 向上搜索光标所在处的词 同上 [+<Ctrl>+i 跳转到光标所在处的变量的声明 使用tag [+< ...

  5. php-fpm epoll封装

    参考 http://www.jianshu.com/p/dac223d7d9ad 事件对象结构 //fpm_event.h struct fpm_event_s { int fd; /* IO 文件句 ...

  6. Linux和Windows数据同步

    正在做一个小项目,关于Linux和Windows数据同步,新知识很兴奋,比赛很有信心,加油吧少年 项目进行中:今晚实验室包宿开整.

  7. Java多线程——不变性与安全发布

    1.不变性 某个对象在被创建后其状态就不能被修改,那么这个对象就称为不可变对象,不可变对象一定是线程安全的.不可变对象很简单.他们只有一种状态,并且该状态由构造函数来控制. 当满足以下条件时,对象才是 ...

  8. Eclipse中的创建maven项目,无法添加src/main/java等source folder

    maven无法添加src/main/java 通过Eclipse创建Java Web项目,目录结构如下: 默认是只有src/main/resources 这个source folder 按照maven ...

  9. 常用的re正则

    常用的正则表达式: 用户名:/^[a-z0-9_-]{3,16}$/ 密码:/^[a-z0-9_-]{6,18}$/ 十六进制值:/^#?([a-f0-9]{6}|[a-f0-9]{3})$/ 电子邮 ...

  10. Google Spanner vs Amazon Aurora: Who’ll Get the Enterprise?

    https://www.clustrix.com/bettersql/spanner-vs-aurora/ Google Spanner versus Amazon Aurora In July 20 ...