spark Streaming 实例
来源:互联网 发布:polycom软件下载 编辑:程序博客网 时间:2024/05/21 04:21
《倾情大奉送–Spark入门实战系列》
http://www.cnblogs.com/shishanyuan/p/4699644.html
流数据模拟器
在实例演示中模拟实际情况,需要源源不断地接入流数据,为了在演示过程中更接近真实环境将定义流数据模拟器。该模拟器主要功能:通过Socket方式监听指定的端口号,当外部程序通过该端口连接并请求数据时,模拟器将定时将指定的文件数据随机获取发送给外部程序。
模拟器代码:
import java.io.{PrintWriter}import java.net.ServerSocketimport scala.io.Sourceobject StreamingSimulation { // 定义随机获取整数的方法 def index(length: Int) = { import java.util.Random val rdm = new Random rdm.nextInt(length) } def main(args: Array[String]) { // 调用该模拟器需要三个参数,分为为文件路径、端口号和间隔时间(单位:毫秒) if (args.length != 3) { System.err.println("Usage: <filename> <port> <millisecond>") System.exit(1) } // 获取指定文件总的行数 val filename = args(0) val lines = Source.fromFile(filename).getLines.toList val filerow = lines.length // 指定监听某端口,当外部程序请求时建立连接 val listener = new ServerSocket(args(1).toInt) while (true) { val socket = listener.accept() new Thread() { override def run = { println("Got client connected from: " + socket.getInetAddress) val out = new PrintWriter(socket.getOutputStream(), true) while (true) { Thread.sleep(args(2).toLong) // 当该端口接受请求时,随机获取某行数据发送给对方 val content = lines(index(filerow)) println(content) out.write(content + '\n') out.flush() } socket.close() } }.start() } }}
将模拟器打包,复制打包文件到spark根目录
实例1:读取文件演示
在该实例中Spark Streaming将监控某目录中的文件,获取在间隔时间段内变化的数据,然后通过Spark Streaming计算出改时间段内单词统计数。
演示代码:
import org.apache.spark.SparkConfimport org.apache.spark.streaming.{Seconds, StreamingContext}import org.apache.spark.streaming.StreamingContext._object FileWordCount { def main(args: Array[String]) { val sparkConf = new SparkConf().setAppName("FileWordCount").setMaster("local[2]") // 创建Streaming的上下文,包括Spark的配置和时间间隔,这里时间为间隔20秒 val ssc = new StreamingContext(sparkConf, Seconds(20)) // 指定监控的目录,在这里为/home/hadoop/temp/ val lines = ssc.textFileStream("/home/hadoop/temp/") // 对指定文件夹变化的数据进行单词统计并且打印 val words = lines.flatMap(_.split(" ")) val wordCounts = words.map(x => (x, 1)).reduceByKey(_ + _) wordCounts.print() // 启动Streaming ssc.start() ssc.awaitTermination() }}
实例2:网络数据演示
在该实例中将由4.1流数据模拟以1秒的频度发送模拟数据,Spark Streaming通过Socket接收流数据并每20秒运行一次用来处理接收到数据,处理完毕后打印该时间段内数据出现的频度,即在各处理段时间之间状态并无关系
该实例需要启动数据流模拟器
演示代码:
import org.apache.spark.{SparkContext, SparkConf}import org.apache.spark.streaming.{Milliseconds, Seconds, StreamingContext}import org.apache.spark.streaming.StreamingContext._import org.apache.spark.storage.StorageLevelobject NetworkWordCount { def main(args: Array[String]) { val conf = new SparkConf().setAppName("NetworkWordCount").setMaster("local[2]") val sc = new SparkContext(conf) val ssc = new StreamingContext(sc, Seconds(20)) // 通过Socket获取数据,该处需要提供Socket的主机名和端口号,数据保存在内存和硬盘中 val lines = ssc.socketTextStream(args(0), args(1).toInt, StorageLevel.MEMORY_AND_DISK_SER) // 对读入的数据进行分割、计数 val words = lines.flatMap(_.split(",")) val wordCounts = words.map(x => (x, 1)).reduceByKey(_ + _) wordCounts.print() ssc.start() ssc.awaitTermination() }}
原文详细内容:
http://www.cnblogs.com/shishanyuan/p/4747749.html
0 0
- Spark Streaming实例分析
- Spark Streaming实例分析
- Spark 之Streaming--实例
- Spark Streaming实例分析
- Spark Streaming实例分析
- spark streaming实例编写
- spark Streaming 实例
- Spark Streaming 应用实例
- Spark Streaming实例
- Spark Streaming + Kafka整合实例
- spark streaming的NetworkWordCount实例理解
- spark streaming的NetworkWordCount实例理解
- spark streaming的NetworkWordCount实例理解
- kafka+spark streaming代码实例(pyspark+python)
- spark-streaming集成Kafka工程实例【转】
- Spark源码系列(八)Spark Streaming实例分析
- Spark源码系列(八)Spark Streaming实例分析
- Spark Streaming
- axis2:ServiceClient增加GZIP压缩支持
- 【模拟一】笨笨玩游戏
- 第二周 项目3(2) - 体验复杂度-汉诺塔程序
- hdu 3718 Similarity【KM匹配】
- 近期遇到的Android问题解决与总结
- spark Streaming 实例
- Linux安装android开发环境
- 分析函数——FIRST_VALUE()和LAST_VALUE()
- HDOJ 5744 Keep On Movin
- git与svn对比
- [LeetCode] 140. Word Break II
- RxJava操作符(一)Creating Observables
- Genymotion安装与集成开发指南
- 浙大PAT甲级 1106 广度优先搜索