SparkStreaming 根据指定字段进行去重,并保留时间为最新的那条记录(消费Kafka版本为 0.10)

用Spark Streaming+Kafka实现订单数和GMV的实时更新 前言 在双十一这样的节日,很多电商都会在大屏幕上显示实时的订单总量和GMV总额。由于订单数量巨大,不可能每隔一秒就到数据库里进行一次SQL的数据统计,这时候就需要用到流式计算。本文将介绍一个简单的Demo,讲解如何通过Spark Stream消费来自Kafka中订单信息,然后计算订单的数量和金额。 总体流程 一个完整的流程大概如下图所示。 用户下单之 阅读详情
        // 对数据进行过滤,取时间为最新的那条记录
        val inputFilterIterable: RDD[(String, String)] = inputFeedRDD.map(inputRDD => {

          val a: ConsumerRecord[String, String] = inputRDD

          val inputString: String = inputRDD.value()

          val inputDataJson: JSONObject = JSON.parseObject(inputString)

          val feedBackJavaBean: FeedbackDTO = JSON.parseObject(inputString, classOf[FeedbackDTO])

          (feedBackJavaBean.getROW_ID.trim + feedBackJavaBean.getLAST_UPD_DATE, inputString)
        })
          .reduceByKey((v1, v2) => {

            // 相同去重关键字的数据,对时间字段进行比较,保留时间最大的
            val key: FeedbackDTO = JSON.parseObject(v1, classOf[FeedbackDTO])
            val value: FeedbackDTO = JSON.parseObject(v2, classOf[FeedbackDTO])

            if (key.getLAST_UPD_DATE.toString >= value.getLAST_UPD_DATE.toString()) {
              v1
            }
            else {
              v2
            }
          })

 

电商业务数据测试用例参考 实际工作中需结合业务需求补充场景(如冷启动推荐、数据回溯测试等),并利用自动化框架(如Airflow调度测试任务)提升效率。),通过ELK(Elasticsearch+Logstash+Kibana)追踪全链路处理过程。监控集群资源:CPU利用率≤80%,内存无OOM(Out of Memory)错误。总数据量:10,000条(含浏览、点击、加购)。:消费到的数据量=10,000条,且字段无缺失。字段(从日志生成到推荐结果返回的时间)。工具构造每秒10万条日志的请求压力。:95%的请求端到端延迟≤1秒。 阅读详情

相关推荐

基于Hadoop+Spark的信用卡欺诈检测系统:从零搭建实时风控平台

大数据技术在金融风控领域的应用日益广泛,其核心原理是通过分布式计算框架处理海量交易数据。Hadoop生态系统中的HDFS提供可靠的数据存储,而Spark框架则实现了高效的批处理和实时计算能力。这种技术组合的价值在于能够构建精准的欺诈检测模型,同时满足金融业务对实时性的严格要求。在信用卡交易场景中,系统通过特征工程提取交易金额、时间、商户类型等关键指标,利用随机森林等机器学习算法识别异常模式。Spark Streaming与Kafka的集成实现了毫秒级的风险判断,将可疑交易实时预警。这种离线数仓与实时流处理相

weixin_30788619的博客 312

spark 按照key 分组 然后统计每个key对应的最大、最小、平均值思路——使用groupby,或者reduceby...

What you're getting back is an object which allows you to iterate over the results. You can turn the results of groupByKey into a list by calling list() on the values, e.g. example = sc.para...

djph26741的博客 1062

Spark的关键技术回顾

目录 前言 Spark的关键技术回顾 一、Spark复习题回顾 1、Spark使用的版本 2、Spark几种部署方式? 3、Spark的提交任务的方式? 4、使用Spark-shell的方式也可以交互式写Spark代码? 5、你对RDD是怎么理解的? 6、Spark如何实现容错? 7、Spark共享变量? 8、Spark的任务执行? 9、Spark的RDD的几种类型? 10、Spark的Transformation算子有几类? 11、RDD创建的三种方法? 12、RDD-Dat

Lansonli(蓝深李)的博客 3092

java8 通过排序分组去重(保留最新的数据)

private List<GenErrQsTask> getDistinctList(List<GenErrQsTask> genErrQsTaskListList) { List<GenErrQsTask> newList = new ArrayList<>(); Map<String, List<GenErrQsTask>> map = //按照createDate排序 rever.

一只笨鸟的博客 4892

从零构建NVENC编码器:一个游戏开发者的实战手册

本文详细介绍了如何从零构建NVENC编码器,特别针对游戏开发者提供实战指南。内容涵盖NVENC基础概念、DirectX纹理捕获、异步编码优化及高级特性配置,帮助开发者高效集成硬件编码技术到游戏引擎中,实现高性能游戏录制和直播功能。重点解析了NVIDIA专用编码芯片的优势与API使用技巧。

weixin_29292431的博客 365

告别重打包:在Android 9上实现免Root的Frida-Gadget持久化Hook(附AOSP源码修改详解)

本文详细介绍了在Android 9上实现免Root的Frida-Gadget持久化Hook技术方案。通过修改AOSP源码,绕过传统重打包方式面临的签名校验和完整性检查,实现在非Root环境下的系统级Hook。文章包含核心代码修改、编译配置调整及调试技巧,为移动安全研究提供高效稳定的解决方案。

weixin_33726313的博客 501

spark RDD算子(六)之键值对聚合操作reduceByKey,foldByKey,排序操作sortByKey

reduceByKey def reduceByKey(func: (V, V) => V): RDD[(K, V)] def reduceByKey(func: (V, V) => V, numPartitions: Int): RDD[(K, V)] def reduceByKey(partitioner: Partitioner, func: (V, V) => V): RDD[(K, V)] 接收一个函数,按照相同的key进行reduce操作,类似于scala的reduce的

Joie_TJ的博客 715

半导体工厂自动化实战:用secs4net实现设备与MES系统通信(附完整代码)

本文详细介绍了如何利用secs4net框架实现半导体工厂设备与MES系统的高效通信。通过解析SECS/GEM协议的核心架构、关键业务场景实现及性能优化实践,帮助开发者快速掌握工业自动化通信技术,提升生产效率和系统稳定性。

transformer2023的博客 892

Java8中的Stream的Map、Filter、limit、去重,删除之前的元素,最大值,最小值

Stream中常用的方法Steam的优势常用方法Filter 过滤Map方法Limit限制返回个数Distinct 去重操作skip 删除之前的元素min 最小值 Steam的优势 在项目中经常用到集合,遍历集合lambda表达式,要对集合进行过滤和排序,Stream就派上用场了。Stream作为java1.8的新特性,基于lambda表达式,它专注于对集合对象进行各种高效、可以让你从常用的if、else、for里面跳出来。提高了编程效率和代码可读性。 常用方法 Filter 过滤 一条数据过滤 List

weixin_48174603的博客 5189

如何打开本地网络的防火墙端口(Windows版)解决ConnectionRefusedError: [WinError 10061] 由于目标计算机积极拒绝,无法连接。问题

ConnectionRefusedError: [WinError 10061] 由于目标计算机积极拒绝,无法连接。 最开始在遇到这个报错的时候十分不解,后来经过思考,有可能是服务器端口占用,或者并没有放行。因此搜查问题的关键是要先去排查问题。 在搜索栏输入控制面板 选择防火墙 选择开关 保证这些选项是开着的 选择高级设置 新建规则 创建协议端口 选择端口 允许连接 点击下一步 创建规则后点击下一步(后命名) 选择任意端口ALL即可 问题排查完毕!socket创建网络通信时,有读者

weixin_46900108的博客 9万+

元数据管理:DataHub和OpenMetadata对比分析

DataHub和OpenMetadata都试图解决数据编目,搜索,发现,治理和质量方面的相同问题。这两种工具都是出于为需要支持大量数据源、团队和用例的大型组织解决这些问题而诞生的。尽管这些工具在发布历史和成熟度方面略有不同,但它们的功能存在显着重叠。

weixin_38030820的博客 6632

Stream 获取集合中符合条件的最新(时间)的记录

Stream 流操作

yangfenggh的博客 9963

23种设计模式-代理(Proxy)设计模式

软考中级-软件设计师 代理设计模式

片言可决讼,半纸能缚龙 1783

实时流计算、Spark Streaming、Kafka、Redis、Exactly-once、实时去重

本文想记录和表达的东西挺多的,一时想不到什么好的标题,所以就用上面的关键字作为标题了。 在实时流式计算中,最重要的是在任何情况下,消息不重复、不丢失,即Exactly-once。本文以Kafka–&gt;Spark Streaming–&gt;Redis为例,一方面说明一下如何做到Exactly-once,另一方面说明一下我是如何计算实时去重指标的。 1. 关于数据源 数据源是文本格式的...

u010074988的博客 227

FPGA经验谈系列文章——3、逻辑级数

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 Xilinx FPGA开发tips系列——前言一、pandas是什么?二、使用步骤1.引入库2.读入数据总结 前言 提示:这里可以添加本文要记录的大概内容: 例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。 提示:以下是本篇文章正文内容,下面案例可供参考 一、pandas是什么? 示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的

gzy0506的博客 1万+

YOLOv11【第三章:高阶应用与落地篇·第7节】多任务联合训练(Multi-Task Learning):检测+分割+关键点三头并进!

🏆 本文收录于专栏 《YOLOv11实战:从入门到深度优化》。本专栏围绕 YOLOv11 的改进、训练、部署与工程优化 展开,系统梳理并复现当前主流的 YOLOv11 实战案例与优化方案,内容目前已覆盖 分类、检测、分割、追踪、关键点、OBB 检测 等多个方向。

**My Coding Family** 727

SparkStreaming+Kafka1.0.x多主题多分区偏移量维护

偏移量保存到数据库 一、版本区别 之前版本的kafka偏移量都是保存在kafka中的,而现在的kafka偏移量保存在了自己的一个特殊主题__consumer__offsets中 二、维护思路 根据传入的主题以及消费者组,先判断库中是否存在当前消费者组的消费记录,如果不存在,则证明为第一次消费,获取主题每分区当前的偏移量保存入库,如果存在,则读取库中各分区偏移量字段,封装为MAP,传入创建Dstre...

JINGXI的博客 940

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

基于Hadoop生态实现离线与实时的消费者商品交易行为分析(消费行为分析、购买偏好分析)

基于Hadoop框架实现离线与实时的消费者商品交易行为分析(消费行为分析、购买偏好分析)

piaow_的博客 1182

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

基于canal+kafka+flink实现实时增量同步3:MySQL到Kafka功能演示

一、Cannal介绍 二、Cannal作用 canal是alibaba开源的基于mysql binlog解析工具,可利用它实现mysql增量订阅/消费。 利用canal,可以将mysql的数据变化,通过解析binlog,投递到kafka(或rocket mq),mq的消费方,可以把这些数据变化,应用到不同的业务场景,比如: 1. 同步到redis(即:数据库的变化自动同步到缓存) 2. 同步到es搜索引擎(即:数据库的变化自动刷新ES索引) 3. 同步到其它异构数据库(即:mysql的变化,自动

RuiKe的博客 1611

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...

spark jdbc mysql_Spark Streaming通过JDBC操作数据库

1. 前言1.1 说明本文记录了学习使用Spark Streaming通过JDBC操作数据库的过程,源数据从Kafka中读取。Kafka从0.10版本提供了一种新的消费者API,和0.8不同,因此Spark Streaming也提供了两种API与之对应,其中spark-streaming-kafka-0-8支持Kafka 0.8.2.1以后的Broker;spark-streaming-kafka...

weixin_34917128的博客 306

阿里云日志服务 + Flume + Kafka + Spark Streaming--part four (未完成)

这篇博客,我们一起来实现一个功能,实时舆论监控。 今天学到了一句话,Talk is cheap, show me your code,分享给大家 好,我们开始! 背景 公司现有的舆论监控是这样的,运营人员每隔一段时间会去查看阿里云日志服务的日志,但由于运营人员不熟这一块,肯定是不能让他们直接上阿里云去查看的,所以我们的开发在GM的菜单栏上加上了这个功能,当运营人员要查看玩家聊天日志的时候,...

AaronLwx的博客 215

大数据应用开发实时统计订单信息

要求每30min统计一次新增营业额、新增订单数、新增有效订单数,因为有一些订单是免费的(如cost字段为空),所以这些订单是无效订单。此外,需要统计总订单数、有效订单总数、总营业额。 我们使用Kafka与Spark Streaming实现订单信息的实时统计。

sinat_30844883的博客 1491

日志实时收集和计算的简单方案

作为互联网公司,网站监测日志当然是数据的最大来源。我们目前的规模也不大,每天的日志量大约1TB。后续90%以上的业务都是需要基于日志来完 成,之前,业务中对实时的要求并不高,最多也就是准实时(延迟半小时以上),因此,我们使用Flume将数据收集到HDFS,然后进行清洗和分析。 后来,根据业务需要,我们有了两个Hadoop集群,并且部署在不同的地方(北京和西安),而所有的日志收集服务器在北京,因此...

weixin_30381793的博客 103

Spark Streaming通过JDBC操作数据库

本文记录了学习使用Spark Streaming通过JDBC操作数据库的过程,源数据从Kafka中读取。 Kafka从0.10版本提供了一种新的消费者API,和0.8不同,因此Spark Streaming也提供了两种API与之对应,其中spark-streaming-kafka-0-8支持Kafka 0.8.2.1以后的Broker;spark-streaming-kafka-0-10支持0....

weixin_30436101的博客 403

sprark structured streaming etl demo

object ETLDemo { def main(args: Array[String]): Unit = { // 1,连接kafka val spark: SparkSession = getSparkSession val kafkaSourceDf: DataFrame = spark.readStream .format("kafka") .option("kafka.bootstrap.servers", "node1:9092") .

epitomizelu的专栏 197

大数据面试核心考点与分布式系统优化实战

分布式系统是大数据技术的基石,其核心在于通过分片存储与并行计算实现海量数据处理。以HDFS为例,其架构设计通过NameNode元数据管理和DataNode数据块存储实现高容错性,而块大小的配置(通常128MB)则体现了磁盘I/O与计算效率的平衡。在实际工程中,通过短路读取、FSImage压缩等技术优化,可显著提升集群性能。对于实时计算场景,Kafka的ISR机制和Flink的检查点配置是保障数据可靠性的关键技术。掌握这些原理不仅能应对技术面试中的深度拷问,更能指导生产环境中的调优实践,例如通过调整Spark

weixin_33806914的博客 537
上一篇: Scala Java 混合开发的项目如何通过 Maven 进行打包(配置文件也都添加进去)
下一篇: {"error":{"root_cause":[{"type":"strict_dynamic_mapping_exception","reason":"mapping set to strict,
Han_Lin_
博客等级 码龄11年 27粉丝 36原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Han_Lin_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值