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

从零构建:Esp32+Esp-IDF驱动ST7789屏幕并集成LVGL图形库

本文详细介绍了如何从零开始使用Esp32和Esp-IDF驱动ST7789屏幕并集成LVGL图形库。内容涵盖环境准备、SPI驱动配置、屏幕初始化、LVGL图形库集成及常见问题排查,帮助开发者快速实现高效稳定的显示解决方案。

weixin_42657024的博客 524

【NVIDIA Jetson Orin系列 - 安装NVIDIA SDK Manager】

NVIDIA Jetson Orin - 安装NVIDIA SDK Manager

dally2的博客 2691

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

Coze工作流实战:Coze一键生成沉浸式历史故事视频

【coze工作流实战】一键生成火爆的沉浸式历史故事视频!短短3分钟,顶替你3天的工作量!

bickys的博客 1004

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

Cadence学习之路(六)元器件封装绘制

使用Allegro PCB Designer绘制元器件封装

qq_46757048的博客 1万+

复旦微FMQL45T900平台RGMII网口调试实战:从PHY寄存器读取异常到链路建立

本文详细记录了复旦微FMQL45T900平台RGMII网口调试的全过程,重点解决了PHY寄存器读取异常问题。通过电压配置调整、时序优化和硬件信号完整性检查,最终成功建立网络链路。文章提供了实用的调试经验和解决方案,适合嵌入式开发人员参考。

weixin_29193359的博客 288

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

Stream 流操作

yangfenggh的博客 9963

AD22里面封装修改后,同步到PCB图里面

【摘要】本文介绍了Altium Designer 22中同步更新元件封装的三种方法:1)从PCB库直接更新:在PCB库面板右键选择"Update PCB With[封装名]";2)通过原理图标准更新:使用Design->Update PCB Document菜单;3)在PCB编辑器中验证更新:通过Tools->Update From PCB Libraries菜单。所有方法最终都需通过ECO(工程变更订单)确认变更,建议执行前仔细核对变更内容。这些方法适用于AD22及早期版本

whm128的博客 1760

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

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

u010074988的博客 227

室内无线传播损耗分析与传播模型验证课程设计

室内无线传播损耗分析与传播模型验证课程设计

a_zxswer的博客 186

数据分析必问:Pandas面试题及参考答案

DataFrame是Pandas库中的一个核心数据结构,它类似于Excel中的表格,可以存储不同类型的数据。在Pandas中,抽样操作通常很简单,但是需要根据数据的特点和分析的需求来选择合适的抽样方法。数据标准化和归一化是数据预处理中常用的技术,目的是将数据调整到一个合适的范围内,以消除不同特征量纲和数值范围的差异,从而保证模型训练的有效性。CSV文件是一种文本文件,其中的数据以逗号分隔。不平衡数据集指的是数据集中各类别样本的数量差异较大的情况,这可能导致模型训练出现偏差,影响模型的泛化能力。

大模型大数据攻城狮的专栏 3007

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

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

JINGXI的博客 940

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

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

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

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

piaow_的博客 1182

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

基于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

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、付费专栏及课程。

余额充值