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可更新状态的实例的更多相关文章

  1. Spark2.2(三十三):Spark Streaming和Spark Structured Streaming更新broadcast总结(一)

    背景: 需要在spark2.2.0更新broadcast中的内容,网上也搜索了不少文章,都在讲解spark streaming中如何更新,但没有spark structured streaming更新 ...

  2. 【Spark】Spark Streaming 动态更新filter关注的内容

    Spark Streaming 动态更新filter关注的内容 spark streaming new thread on driver_百度搜索 (1 封私信)Spark Streaming 动态更 ...

  3. hdu 5023 线段树延迟更新+状态压缩

    /* 线段树延迟更新+状态压缩 */ #include<stdio.h> #define N 1100000 struct node { int x,y,yanchi,sum; }a[N* ...

  4. git实战-linux定时监控github更新状态(二)

    系列文章 git介绍-常用操作(一)✓ git实战-linux定时监控github更新状态(二)✓ 本文主要内容 如何查看github的本地仓库和远程仓库的同步情况 linux服务器定时监控githu ...

  5. Spark入门实战系列--9.Spark图计算GraphX介绍及实例

    [注]该系列文章以及使用到安装包/测试数据 可以在<倾情大奉送--Spark入门实战系列>获取 .GraphX介绍 1.1 GraphX应用背景 Spark GraphX是一个分布式图处理 ...

  6. 一个handle使用更新线程的实例

    handle更新线程实例 package com.example.administrator.handle; import android.app.Activity;import android.os ...

  7. Spark2.3(四十二):Spark Streaming和Spark Structured Streaming更新broadcast总结(二)

    本次此时是在SPARK2,3 structured streaming下测试,不过这种方案,在spark2.2 structured streaming下应该也可行(请自行测试).以下是我测试结果: ...

  8. [转]MongoDB更新操作replaceOne()实例讲解

    最近正在学习MongoDB,作为数据库的学习当然是要从CRUD开始学起了.这篇文章默认读者是知道如何安装MongoDB.如何运行MongoDB实例以及了解了MongoDB中的collection.do ...

  9. WPF以access为数据库,简单实现一个显示数据和更新数据的实例

    做一个小实例,如下图,

随机推荐

  1. HTML5 2D平台游戏开发#6地图绘制

    此前已经完成了一部分角色的动作,现在还缺少可以交互的地图让游戏看起来能玩.不过在开始之前应当考虑清楚使用什么类型的地图,就2D平台游戏来说,一般有两种类型的地图,Tile-based和Art-base ...

  2. oracle查看表占用磁盘空间

    SELECT T.OWNER, T.SEGMENT_NAME, SUM(T.BYTES) / 1024 / 1024 M  FROM DBA_SEGMENTS T WHERE T.OWNER = 'u ...

  3. 解决 三星Note3 桌面小部件不实时更新/不刷新 的问题

    机型及问题描述:我的是三星note3 (国行 SM-N9008V),已ROOT,安装了LBE安全大师.在桌面小部件中,有些不会实时更新.比如有 滴答清单(办过的事项无法勾选),百度云音乐(歌曲播放更新 ...

  4. hadoop常见算法(持续更新)

    1. 对以下数据进行排序,根据收入减去支出得到最后结余从大到小排序 账号 收入 支出 日期 zhangsan@163.com 6000 0 2014-02-20 lisi@163.com 2000 0 ...

  5. Linux 在不重启的情况下识别新挂载的磁盘

    在使用 Linux 时,有时候会因为初始时磁盘空间分配估计不足,使用中需要将挂载点扩容的情况,这就需要我们挂载新的磁盘.但是如果我们在 Linux 运行过程中挂载磁盘, Linux 又不能在不重启的情 ...

  6. Lumen开发:结合Redis实现消息队列(1)

    1.简介 Lumen队列服务为各种不同的后台队列提供了统一的API.队列允许你推迟耗时任务(例如发送邮件)的执行,从而大幅提高web请求速度. 1.1 配置 .env文件的QUEUE_DRIVER选项 ...

  7. redis 集群 搭建

    环境: centos6.5 192.168.16.11 centos6.5 192.168.16.12 centos6.5 192.168.16.13 三台虚拟机模拟9个节点,一台机器3个节点,创建出 ...

  8. Problem_A

    Problem_A Time Limit:1000MS     Memory Limit:65536KB     64bit IO Format:%I64d & %I64u Descripti ...

  9. 今天在网上查看了一个socket程序,运行的时候一直报错,经过队友解决?

    1.首先是问题代码ip_port = ('192.168.12.2',8001)2.上边的代码本身没有问题,但是必须经过修改自己本机的局域网IP地址才能顺利链接请参考上一篇blog的地址,查看本机的i ...

  10. 九度OJ 1194:八进制 (进制转换)

    时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:3521 解决:2058 题目描述: 输入一个整数,将其转换成八进制数输出. 输入: 输入包括一个整数N(0<=N<=100000 ...