SparkStreaming两个小Demo
来源:互联网 发布:淘宝保存的图片找不到 编辑:程序博客网 时间:2024/06/07 07:06
通过对Spark Streaming的基本使用介绍后,我这次写了两个小DEMO,加深下对其的使用。
一、Spark Streaming处理文件系统数据
流程图为:
通过SparkStreaming来监听一个固定socket上的数据,获取socket上的数据,然后存储到内存中,再对数据做其他操作。由于socket已经占用了一个资源,所以local[N],N线程数要大于1才能有资源腾出给其他操作。
代码如下:
import org.apache.spark.SparkConfimport org.apache.spark.streaming.{Seconds, StreamingContext}/** * Spark Streaming处理Socket数据 * * 测试: nc */object NetworkWordCount { def main(args: Array[String]): Unit = { val sparkConf = new SparkConf().setMaster("local[2]").setAppName("NetworkWordCount") /** * 创建StreamingContext需要两个参数:SparkConf和batch interval */ val ssc = new StreamingContext(sparkConf, Seconds(5)) val lines = ssc.socketTextStream("localhost", 6789) val result = lines.flatMap(_.split(" ")).map((_,1)).reduceByKey(_+_) result.print() ssc.start() ssc.awaitTermination() }}
首先创建SparkConf文件,由于监听socket端口,sparkstreaming中需要占用一个receiver,所以此处需要设置为local[2],设置了两个线程,腾出一个资源来进行Transformation和outp operation操作,然后再创建SparkStreamingContext入口对象,此处设置的5s一批次,通过这个streaming对象调用socketTextStream,此时的lines就相当于是个DStream,然后进行flatMap操作,实现字母求和,相当于是进行Transformation操作,最后将结果打印出来,相当于是进行output operations操作。最后用nc -lk 6789进行测试。注意添加下面两个依赖:
<dependency> <groupId>com.fasterxml.jackson.module</groupId> <artifactId>jackson-module-scala_2.11</artifactId> <version>2.6.5</version> </dependency> <dependency> <groupId>net.jpountz.lz4</groupId> <artifactId>lz4</artifactId> <version>1.3.0</version> </dependency>
二、Spark Streaming处理文件系统数据
代码如下:
import org.apache.spark.SparkConfimport org.apache.spark.streaming.{Seconds, StreamingContext}/** * 使用Spark Streaming处理文件系统(local/hdfs)的数据 */object FileWordCount { def main(args: Array[String]): Unit = { val sparkConf = new SparkConf().setMaster("local").setAppName("FileWordCount") val ssc = new StreamingContext(sparkConf, Seconds(5)) val lines = ssc.textFileStream("file:///Users/rocky/data/imooc/ss/") val result = lines.flatMap(_.split(" ")).map((_,1)).reduceByKey(_+_) result.print() ssc.start() ssc.awaitTermination() }}
由于文件系统是本地的,所以可以直接设置为local,采用textFileStream的方法,监控ss文件夹里面文件的变化,并将这些变化进行transformation处理,注意此处要采用的move或put的方式移动文件到该文件夹,不支持递归嵌套的文件夹,文件夹里文件形式要一样,一旦将某文件移动到该文件夹,该文件不能再添加新的数据,即使添加新的数据也不处理,除非再移动进来一个新的文件。阅读全文
0 0
- SparkStreaming两个小Demo
- 多线程两个小demo
- SparkStreaming 打印输出demo
- SparkStreaming wordcount demo
- SparkStreaming小例子
- sparkStreaming
- sparkStreaming
- sparkstreaming
- SparkStreaming
- SparkStreaming的实时单词统计小例子
- 小demo
- 小demo
- 小demo
- keyPress事件中的keyCode和action 两个参数(附测试按键的一个小demo)
- c++实现一个比较两个string类型的版本号的小demo
- android中json解析的两个工具:Gson和Jackson的使用小demo
- Android两个小Demo之电话拨号器和短信发送器
- Android小demo,两个button,控制多个输入框实现值自增自减。
- GPU+Cuda8.0+cudnn8+OpenCv2.4.13+Caffee 安装教程嘎嘎
- ubuntu opencv安装教程
- java POI 解析json 导出word
- centos7 安装 mysql5.6
- oracle一张表的数据某些字段插入到另外一张表的某些字段,以及同一数据库备份一张表
- SparkStreaming两个小Demo
- 解决MySQL5.6.21安装版出现任务栏图标无法正常启动和关闭服务
- ArcGIS实现聚合点效果
- boost安装 c++
- AOP
- 关于dsp28335移相全桥
- Java的循环结构
- Repeating Periodic Tasks in Android
- try-catch-finally中throw,return时的执行顺序