Spark- SparkStreaming可更新状态的实例
Producer
package zx.zx.sparkkafka
import java.util.Properties
import kafka.producer.{KeyedMessage, Producer, ProducerConfig}
import scala.util.Random
/**
* Created by 166 on 2017/9/6.
*/
object Producer {
val topic="myWordCount1"
val buffer: StringBuilder = new StringBuilder
val message: Array[String] = Array("hadoop","scala","spark","kafka","java","storm","redis","hello","world")
def getMessage:String={
buffer.clear()
for(info<- to )
{
if(info!=) buffer.append(message(Random.nextInt(message.length)).concat(" ")) else buffer.append(message(Random.nextInt(message.length)))
}
buffer.toString()
}
def main(args: Array[String]) {
//properties用户保存一下配置信息的
val properties= new Properties
//添加配置信息:metadata.broker.list指定kafka的Borker的地址和端口,可以是多个Borker的地址
properties.put("metadata.broker.list","192.168.1.88:9092,192.168.1.89:9092,192.168.1.90:9092")
//数据写入到kafka中的使用序列化方式
properties.put("serializer.class","kafka.serializer.StringEncoder")
val producer= new Producer[String,String](new ProducerConfig(properties))
for (i<- until Integer.MAX_VALUE){
Thread.sleep()
val message: KeyedMessage[String, String] = KeyedMessage[String,String](topic,"",null,getMessage)
producer.send(message)
}
}
}
SparkStreamingDemo
注意必须设置checkpoint
package zx.zx.sparkkafka
import org.apache.log4j.{Level, Logger}
import org.apache.spark.{HashPartitioner, SparkConf}
import org.apache.spark.streaming.dstream.{DStream, ReceiverInputDStream}
import org.apache.spark.streaming.kafka.KafkaUtils
import org.apache.spark.streaming.{Seconds, StreamingContext}
/**
* Created by 166 on 2017/9/6.
*/
object SparkStreamingDemo {
/**
* Iterator[(String, Seq[Int], Option[Int])]
* 第一个:key,单词
* 第二个:当前批次该单词出现的次数
* 第三个:初始值或者以前累加过的值
*/
val updataFunc=(iter:Iterator[(String, Seq[Int], Option[Int])])=>{
iter.map(t=>(t._1,t._2.sum+t._3.getOrElse()))
}
def main(args: Array[String]) {
Logger.getLogger("org.apache.spark").setLevel(Level.OFF)
//创建SparkConf并设置AppName
val conf: SparkConf = new SparkConf().setAppName(this.getClass.getName).setMaster("local[2]")
//创建StreamingContext
val ssc: StreamingContext = new StreamingContext(conf,Seconds())
//设置检查点-----如果想要更新历史状态(累加),要设置checkpoint
//checkpoint必须设置,一般来说设置中HDFS
ssc.checkpoint("C:\\Users\\166\\Desktop\\Data\\ck")
//接受命令行中的参数
//从kafka中拉取数据
val zkQuorum="srv01:2181,srv02:2181,srv03:2181"
val groupId="g1"//groupID=UUID.randomUUID().toString
//当话题很多时就使用这个要切分---topics={t1,t2,t3}
//val topicMap = topics.split(",").map((_, numThreads.toInt)).toMap
val topic = Map("myWordCount1"->)
val topicAndLine: ReceiverInputDStream[(String, String)] = KafkaUtils.createStream(ssc,zkQuorum,groupId,topic)
//(key,message)--->map(_._2)===>message
val lines: DStream[String] = topicAndLine.map(_._2) //该数据可能是多行的
//一行一行地取出来,切分数据
//redis spark scala hadoop hello scala java java hadoop scala world
//(redis,1),(spark,1)
val words: DStream[(String, Int)] = lines.map(_.split(" ")).flatMap(x=>x).map((_,))//一行一行地取出来,切分数据
//统计单词数量
val result: DStream[(String, Int)] = words.updateStateByKey(updataFunc,new HashPartitioner(ssc.sparkContext.defaultParallelism),true)
//将结果打印到控制台
result.print()
ssc.start()
ssc.awaitTermination()
}
}
Spark- SparkStreaming可更新状态的实例的更多相关文章
- Spark2.2(三十三):Spark Streaming和Spark Structured Streaming更新broadcast总结(一)
背景: 需要在spark2.2.0更新broadcast中的内容,网上也搜索了不少文章,都在讲解spark streaming中如何更新,但没有spark structured streaming更新 ...
- 【Spark】Spark Streaming 动态更新filter关注的内容
Spark Streaming 动态更新filter关注的内容 spark streaming new thread on driver_百度搜索 (1 封私信)Spark Streaming 动态更 ...
- hdu 5023 线段树延迟更新+状态压缩
/* 线段树延迟更新+状态压缩 */ #include<stdio.h> #define N 1100000 struct node { int x,y,yanchi,sum; }a[N* ...
- git实战-linux定时监控github更新状态(二)
系列文章 git介绍-常用操作(一)✓ git实战-linux定时监控github更新状态(二)✓ 本文主要内容 如何查看github的本地仓库和远程仓库的同步情况 linux服务器定时监控githu ...
- Spark入门实战系列--9.Spark图计算GraphX介绍及实例
[注]该系列文章以及使用到安装包/测试数据 可以在<倾情大奉送--Spark入门实战系列>获取 .GraphX介绍 1.1 GraphX应用背景 Spark GraphX是一个分布式图处理 ...
- 一个handle使用更新线程的实例
handle更新线程实例 package com.example.administrator.handle; import android.app.Activity;import android.os ...
- Spark2.3(四十二):Spark Streaming和Spark Structured Streaming更新broadcast总结(二)
本次此时是在SPARK2,3 structured streaming下测试,不过这种方案,在spark2.2 structured streaming下应该也可行(请自行测试).以下是我测试结果: ...
- [转]MongoDB更新操作replaceOne()实例讲解
最近正在学习MongoDB,作为数据库的学习当然是要从CRUD开始学起了.这篇文章默认读者是知道如何安装MongoDB.如何运行MongoDB实例以及了解了MongoDB中的collection.do ...
- WPF以access为数据库,简单实现一个显示数据和更新数据的实例
做一个小实例,如下图,
随机推荐
- unity3d动态加载资源
在Unity3D的网络游戏中实现资源动态加载 分类: 最新学习2012-06-14 13:35 1127人阅读 评论(0) 收藏 举报 网络游戏nullvectorjson游戏string 用Unit ...
- ORACLE 表空间使用率查询
SELECT A.TABLESPACE_NAME, A.BYTES / (1024 * 1024 * 1024 ) TOTAL, B.BYTES / (1024 * 1024 * 1024 ) USE ...
- iOS 解决TableView reloadData时cell中图片会闪的问题
tableView调用reloaddata的时候发现有个小问题,每次刷新图片都会抖动闪烁一下,看着很难受,也影响体验.造成这个问题的主要原因是因为刷新时候切换图片导致.要解决这个问题也很好解决,使用S ...
- android:分享 一个非常强大的LOG开关---Log.isLoggable
1.API亮点: 此API能够实现不更换APK.在出问题的手机上就直接能抓到有效log,能提升不少工作效率. .API介绍 近期在解决短信问题时.看到一个非常强大的LOG开关---Log.isLogg ...
- 用PreferenceActivity做一个标准的设置界面
最后接触到一个任务,做一个工厂设置,在我看来工厂设置不需要多美观,但是一定要方便修改,添加功能,再就是使用方便,我就想到了用PreferenceActivity,android系统的settings就 ...
- CLR内存回收机制
代龄机制. 通过递归构建可达对象图,不可达的对象会被回收,然后CLR会矫正对象指针. 对于终止化/Finalize对象, 一开始时这些对象指针/根/引用会被放到终止化链表中,当CLR垃圾收集开始时,那 ...
- php != 和 !== 的区别
== and != do not take into account the data type of the variables you compare. So these would all re ...
- jquery基础研究学习【HTML】
jQuery HTMLjQuery 捕获jQuery 设置jQuery 添加元素jQuery 删除元素jQuery CSS 类jQuery css() 方法jQuery 尺寸 笔记:
- github 答题
头脑王者 / 百万英雄 / 冲顶大会 / 芝士超人 自动答题:https://github.com/cxs1994/python_answer 头脑王者:https://github.com/sear ...
- PHP自动加载功能原理解析
前言 这篇文章是对PHP自动加载功能的一个总结,内容涉及PHP的自动加载功能.PHP的命名空间.PHP的PSR0与PSR4标准等内容. 一.PHP自动加载功能 PHP自动加载功能的由来 在PHP开发过 ...