SparkSteaming整合kafka和redis 默认偏移量 

Spark Streaming集成kafka和redis简单示例 - Java版 pom.xml中添加依赖:<!-- https://mvnrepository.com/artifact/org.apache.spark/spark-streaming --> <dependency> <groupId>org.apache.spark</groupId> <artifactId>spark-strea... 阅读详情

SparkSteaming整合kafka和redis,这里用的是默认偏移量 

[root@dream1 ~]# kafka-console-producer.sh --broker-list dream1:9092,dream2:9092,dream3:9092 --topic test
>hello jeery spark tom hello
>hello spark
>hello
>hello tome^H
>heool^H^H
>tom jerry
>jerry
>spark
package com.ws.sparkstreaming

import org.apache.kafka.clients.consumer.ConsumerRecord
import org.apache.spark.SparkConf
import org.apache.spark.streaming.dstream.{DStream, InputDStream}
import org.apache.spark.streaming.kafka010.{ConsumerStrategies, KafkaUtils, LocationStrategies}
import org.apache.spark.streaming.{Seconds, StreamingContext}
import redis.clients.jedis.Jedis

object WordCountJoinKafkaRedis {
  def main(args: Array[String]): Unit = {
    val conf = new SparkConf().setAppName(this.getClass.getSimpleName).setMaster("local[*]")
    val ssc = new StreamingContext(conf,Seconds(5))
    val kafkaParams: Map[String, Object] = Map[String,Object](
      "bootstrap.servers"->"dream1:9092,dream2:9092,dream3:9092",// kafka地址
      "key.deserializer"->"org.apache.kafka.common.serialization.StringDeserializer", // 设置反序列化组件
      "value.deserializer"->"org.apache.kafka.common.serialization.StringDeserializer",
      "group.id"->"1", // 消费者组
      "auto.offset.reset"->"earliest", // 指定消费者从哪开始消费[latest,earliest]
      "enable.auto.commit"->"true" // 是否自动提交偏移量,默认是true
    )
    val topic: Iterable[String] = Array("test").toIterable
    val rows: InputDStream[ConsumerRecord[String, String]] = KafkaUtils.createDirectStream(
      ssc,
      LocationStrategies.PreferConsistent,
      ConsumerStrategies.Subscribe[String, String](topic, kafkaParams)
    )
    val lines = rows.map(r => r.value())
    val reduce: DStream[(String, Int)] = lines.flatMap(_.split(" ")).map((_, 1)).reduceByKey(_ + _)
    val jedis = new Jedis("dream1")
    reduce.foreachRDD(rdd=>{
      val tuples = rdd.collect()
      for (elem <- tuples) {
        jedis.hincrBy("wordcount",elem._1,elem._2)
      }
    })
    ssc.start()
    ssc.awaitTermination()
  }
}

 

Java实现 SparkStreaming读取Kafka数据,并且单词累加计数 网络上大部分文章都没有做到真正的单词累加计数,终于研究完以后成功实现 简单的Kafka生产者 package com.zwj.utils; import kafka.javaapi.producer.Producer; import kafka.producer.KeyedMessage; import kafka.producer.ProducerConfig; import org.a... 阅读详情

相关推荐

kafka-connect-redis:f Kafka Connect Redis的源和接收器连接器

Kafka Connect Redis 用于Redis的Kafka源和接收器连接器 连接器 来源 Kafka Connect Redis Source使用Redis发布/订阅订阅Redis通道/模式(包括),并将接收到的消息写入Kafka。 有关更多信息,请参见。 下沉 Kafka Connect Redis Sink使用Redis命令格式( SET , GEOADD等)使用Kafka记录,并将它们应用于Redis。 有关更多信息,请参见。 演示版 查看该,以亲身体验该连接器的运行情况! 该演示将引导您在本地计算机上设置Kubernetes,安装连接器,并使用连接器将数据写入Redis集群或将数据从Redis引入Kafka。 兼容性 需要Redis 2.6或更高版本。

葵花宝典--SparkStreaming

一、概述 1、定义 Spark Streaming用于处理流式数据。支持多种数据源,常用kafka,数据输入后可以使用spark的算子进行操作,运行的结果可以保存在很多地方。 处理数据为小批次处理,使用时间间隔来将数据分开,批处理的间隔影响了作业的提交效率和数据处理延迟,也影响了数据处理的吞吐量和性能。 使用了一个高级抽象-离散化流DStream,将每个时间段的数据封装为一个RDD,这些RDD的序列构成了DStream,因此称为DStream。它可以由数据源创建,也可以在其他的DStream通过高阶

奔波在代码路上 425

SillyTavern角色卡制作全攻略:如何用AI还原你喜欢的虚构角色(附三叶完整角色卡JSON)

本文详细介绍了如何使用SillyTavern制作高质量AI角色卡,以《你的名字》中的宫水三叶为例,从角色特征提取、对话风格捕捉到JSON结构优化,全面解析AI角色扮演的创作技巧。通过具体的写作示例和完整角色卡JSON,帮助二次元爱好者和同人创作者实现虚构角色的精准还原与生动互动。

pandas7gardener的博客 2139

sparkstreaming消费多个topic数据获取topic的信息

这个问题是最近一个朋友问我的,用sparkstreaming消费kafka的多个topic,怎么获取topic的信息,然后根据不同topic的数据做不同的逻辑处理.其实这个问题非常简单,...

JasonLee实时计算 6163

实战指南:利用 LangGraph 的状态管理实现多轮对话的上下文隔离与持久化

本文详细介绍了如何利用LangGraph的状态管理机制,高效实现多轮对话中的上下文隔离与持久化。通过实战代码演示,从基础的消息历史管理到自定义状态扩展,再到使用SQLite进行生产级持久化,系统讲解了如何借助LangGraph的State和Checkpointer自动化处理对话记忆、用户隔离及数据存储,显著提升开发效率。

weixin_28396629的博客 489

RTX4090上跑CenterNet训练

参考实现 url=https://github.com/xingyizhou/CenterNet.git commit_id=5b1a490a52da57d3580e80b8bb4bbead9ef2af96

遗失的神庙 1622

SparkStreaming-解析

1.初始化StreamingContext //SparkStreaming程序入口 val conf: SparkConf = new SparkConf().setAppName("wordcount").setMaster("local[*]")//如果需要打包运行在服务器上,不需要指定master val sc = new SparkContext(conf) sc.setLogLevel("WARN") val ssc: StreamingContext = new StreamingCont

weixin_44085996的博客 779

STM32H743IIT6上LVGL移植实战:从零到触摸屏驱动的完整配置流程

本文详细记录了在STM32H743IIT6高性能MCU上,从零开始移植LVGL图形库到7寸RGB触摸屏的完整实战流程。内容涵盖工程搭建、显示与触摸驱动配置、LVGL核心优化及常见问题排查,重点讲解了如何利用STM32H743的硬件特性(如DMA2D、LTDC)提升GUI性能,为嵌入式GUI开发提供了一份详实的配置指南。

spark7igniter的博客 561

SparkStreaming对接Redis导致redis连接数不断上升

redis连接数 出现原因:在partition中通过新建对象创建redis连接池!使用完后,未彻底关闭连接池,导致随着批次增加,redis连接数也不断增加。 解决办法:手动调用close或destroy() def destroyPool(): Unit ={ if(pool != null){ pool.close() } } ...

lfish001的博客 1037

「点燃我,温暖你」用Python制作一个动态爱心效果

最近「点燃我,温暖你」这部剧非常火,讲述的是程序员的爱情故事。其中陈飞宇饰演的男主李峋,在剧中用程序做出的爱心跳动效果,非常炫。

Modeler_xiaoyu的博客 1万+

物理学建模及仿真平台Chrono安装

Chrono是一个基于物理学的建模和仿真基础设施,它是在C++中实现的独立于平台的开源设计。一个projectchrono库可以嵌入到一个软件项目中,例如在可变形地形上运行的轮式和履带式车辆、机器人、机械电子系统、顺应性机构和流体固体相互作用现象。系统可以由刚性和柔性/顺应性部件组成,并带有约束、电机和接触;部件可以具有三维形状,以便进行碰撞检测。然而安装还是出现了一些问题,所以在此总结。已经装好visual studio。

Already8888的博客 6501

SparkSteaming整合Kafka的方式

1、基于Receiver方式 这种方式构建出的DStream有一个接收者Receiver,通过这个接收者将数据保存在Executor中。 这种方式是需要独享CPU的core,也就是说需要独立占用若干个线程。所以如果在本地模式下,local[N]中的N指定为1的话,就只有一个线程来运行SparkStreaming程序,这一个线程只能用来接收数据,没有额外的线程去计算,所以会看到数据不被处理的现象。...

weixin_40981792的博客 739

国产FPGA高云GW1NSR-4C,集成ARM Cortex-M3硬核

从板子整体角度来看,这是一款国产化程度很高的板子,从主控FPGA,到JTAG芯片,存储芯片、电源芯片等,都是使用的国产半导体公司的产品。板子整体尺寸也比较迷你,属于小而美类型的,可以认为是一款FPGA核心板,当然也预留了排针接口,给用户足够的扩展空间。对于想了解高云小蜜蜂SoC软硬件开发,以及对云源软件、MCU开发环境做个深度评测来说足够了。JTAG调试器固件可以增加虚拟串口功能,对于板子本来来说面积不会有改动,只需要添加两根信号线即可。

whik1194的博客 6399

Spark系列十七:经典案列使用直连的方式,Kafka,SparkSteaming,Redis

先一个一个java程序,读取日志文件中的数据,然后将数据写入到Kafka中,然后写一个SparkSteaming程序,使用直连的方式读取Kafka中的数据,计算如下指标 该文件是一个电商网站某一天用户购买商品的订单成交数据,每一行有多个字段,用空格分割,字段的含义如下 用户ID ip地址 商品分类 购买明细 商品金额 A 202.106.196.1...

m0_37657725的博客 657

RH850从0搭建Autosar开发环境系列讲解 - 总目录

Davinci Autosar实战开发从0构建开发能力。OS,COM,DCM,BSWMM,ECUM,VLINK,XCP,MEMMAP等模块配置,带你熟悉运行的autosar代码,包括MICROSAR的启动运行,使用GreenHills生成运行的hex。

weixin_42412049的博客 1万+

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

sparksteaming与kafka手动保存offset

1 如果读取存在数据库fromoffset数据为空,那么offset会优先从kafka中获取上次的offset, 2 如果用DB方式存读offset,此时fromoffset为空,也没有手动保存offset到kafka当中,那么每次起程序都会读取之前保存在kafka中的offset,知道手动将offset保存到kafka当中下次读取才回改变 ...

lazyman001的博客 228

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

SparkStreaming 关于kafka偏移量的管理Redis篇

在开发java SparkStreaming的时候一定会遇到kafka偏移量管理的问题上,因为需要考虑到各式各样的容灾处理,如果我们采用kafka来自行处理kafka偏移量的话非常简单,因为kafka本身就有这个机制可以定时存储消费者分组的偏移量,但是这样会有重复消费的情况还有就是如果采用这种方式那么就是将kafka的offset全部交给kafka管理,本人在这里是不太推荐的,因...

qq_41768325的博客 1225

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

对DStream.foreachRDD的理解

最近在使用Spark Streaming过程中,对foreachRDD有点疑问,查阅资料后记录如下: foreachRDD(func)的官方解释为 The most generic output operator that applies a function, func, to each RDD generated from the stream. This function should p

数据之路 3022

SparkSteaming整合kafka----采用direct(低级Api)

废话不多说,直接上代码 1、pom.xml <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://ma

AyubLIbra的博客 394

spark手动维护kafka偏移量=>存储介质mysql/redis

package common import java.util import redis.clients.jedis.{HostAndPort, JedisCluster, JedisPoolConfig} /** * JedisCluster连接工具 * @author IT803300 * @date 2020-10-15 */ object RedisDBUtil { private val nodes:util.Set[HostAndPort] = new util.H

weixin_43862280的博客 373

SparkStreaming部分:OutPutOperator类,foreachRDD算子【Java版纯代码】

forearchRDD是output类算子  * 对于从流中RDD应用func的最通用的一个output 操作。  * 该功能应将每个RDD中的数据推送到外部系统,例如将RDD保存到文件,或将其通过网络写入数据库。  *   * 注意:如果使用foreachRDD这个算子,必须要对抽取出来的RDD执行action类算子,代码才能正常执行。 1).拿到DStream中的RDD,对RDD要使用RDD...

wyqwilliam的博客 943

spark读取kafka数据 createStream和createDirectStream的区别

spark读取kafka数据 createStream和createDirectStream的区别

Dino系我的专栏 2万+

kafka直连方式,使用redis保存偏移量

使用Redis来记录偏移量,以前用receive方式时,使用zookeeper保存偏移量,不用自己保存偏移量,使用直连方式可以自己保存偏移量,更加灵活。在直连方式中,保存偏移量可以使用zookeeper,也可以使用mysql、redis等来保存偏移量,下面使用一种简单的方式用reids来保存偏移量 package day03.KafkaDricte import java.{lang, util...

Lu_Xiao_Yue的博客 3048

SparkStreaming - 使用Mysql/Redis手动维护Kafka Offset

Spark Streaming No Receivers 方式的createDirectStream 方法不使用接收器,而是创建输入流直接从Kafka 集群节点拉取消息。输入流保证每个消息从Kafka 集群拉取以后只完全转换一次,保证语义一致性。但是当作业发生故障或重启时,要保障从当前的消费位点去处理数据(即Exactly Once语义),单纯的依靠SparkStreaming本身的机制是不太理想的,生产环境中通常借助手动管理offset的方式来维护kafka的消费位点。本文分享将介绍如何手动管理Kafka

qq_34735235的博客 896

使用redis存储kafka的偏移量

使用redis存储kafka的偏移量 转自:Lu_Xiao_Yue 使用Redis来记录偏移量,以前用receive方式时,使用zookeeper保存偏移量,不用自己保存偏移量,使用直连方式可以自己保存偏移量,更加灵活。在直连方式中,保存偏移量可以使用zookeeper,也可以使用mysql、redis等来保存偏移量,下面使用一种简单的方式用reids来保存偏移量 package day03.Ka...

qq_38393105的博客 1713

SparkStreaming中的foreachRDD、spark-core中foreach、spark-core中foreachPartition三者之间的区别

SparkStreaming中foreachRDD算子解析: SparkStreaming是流式实时处理数据,就是将数据流按照定义的时间进行分割(就是“批处理”)。每一个时间段内处理的都是一个RDD。而SparkStreaming中的foreachRDD方法就是在处理每一个时间段内的RDD数据。 (官方文档”http://spark.apachecn.org”中的解释) DStream中即...

mys_35088的博客 2148
上一篇: 如何让自己写的shell脚本,全局可用,无需加sh命令
下一篇: spark的client模式与cluster模式
JNWsong
博客等级 码龄9年 287粉丝 204原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值