大数据(8r)图解流计算window滑窗

OFDM信号的产生与解调 本篇文章的所有代码是MIMO-OFDM系统原理、应用及仿真(李莉)上面的源代码 (本文章不参与任何商业盈利,如果涉及到什么侵权问题请及时联系博主删除文章) 内容: 1.通过对OFDM信号的各个子载波赋共轭对称数据产生一个实OFDM符号。 2.给OFDM符号加循环前缀与循环后缀。 3.给OFDM加窗(升余弦窗). 4.信道采用高斯白噪声信道。 5。去掉循环前缀和后缀,解调。 下面附上... 阅读详情

0、前言

  • 本文属于Spark Streaming分支章节
  • 本文介绍流式处理中的滑窗运算及其优化
  • 主要方法:window、reduceByKeyAndWindow

1、Window Operations

TransformationMeaning
window(windowLength, slideInterval)Return a new DStream which is computed based on windowed batches of the source DStream.
countByWindow(windowLength, slideInterval)Return a sliding window count of elements in the stream.
countByValueAndWindow(windowLength, slideInterval, [numTasks])When called on a DStream of (K, V) pairs, returns a new DStream of (K, Long) pairs where the value of each key is its frequency within a sliding window.
reduceByWindow(func, windowLength, slideInterval)Return a new single-element stream, created by aggregating elements in the stream over a sliding interval using func. The function should be associative and commutative so that it can be computed correctly in parallel.
reduceByKeyAndWindow(func, windowLength, slideInterval, [numTasks])When called on a DStream of (K, V) pairs, returns a new DStream of (K, V) pairs where the values for each key are aggregated using the given reduce function func over batches in a sliding window. Note: By default, this uses Spark’s default number of parallel tasks (2 for local mode, and in cluster mode the number is determined by the config property spark.default.parallelism) to do the grouping. You can pass an optional numTasks argument to set a different number of tasks.

2、代码外壳(复制套用)

import org.apache.spark.{SparkConf, SparkContext}
import org.apache.spark.rdd.RDD
import org.apache.spark.streaming.dstream.{DStream, InputDStream}
import org.apache.spark.streaming.{Seconds, StreamingContext}
import scala.collection.mutable

object Hello {
  def main(args: Array[String]): Unit = {
    // 创建SparkContext对象和SparkStreamingContext
    val c0: SparkConf = new SparkConf().setAppName("a0").setMaster("local[2]")
    val sc: SparkContext = new SparkContext(c0)
    val ssc: StreamingContext = new StreamingContext(sc, Seconds(10))
    // 创建RDD队列并放入QueueInputDStream
    val rddQueue: mutable.Queue[RDD[String]] = new mutable.Queue[RDD[String]]()
    val iDS: InputDStream[String] = ssc.queueStream(rddQueue, oneAtATime = false)
    //================================ 滑窗 ======================================

    //===========================================================================
    // 打印结果
    dS.print()
    // 启动任务
    ssc.start()
    // 循环输入
    while (true) {
      rddQueue += sc.makeRDD(scala.io.StdIn.readLine.split(" "))
    }
    // 等待运算终止
    ssc.awaitTermination()
  }
}

2.1、window

val wDS: DStream[String] = iDS.window(Seconds(20))
val dS: DStream[(String, Int)] = wDS.map((_, 1)).reduceByKey(_ + _)

2.2、reduceByKeyAndWindow

val dS: DStream[(String, Int)] = iDS.map((_, 1))
  .reduceByKeyAndWindow((a: Int, b: Int) => (a + b), Seconds(20), Seconds(10))

2.3、reduceByKeyAndWindow优化

  • 优化点:引入invReduceFunc
  • 全称:inverse reduce function
  • 译名:逆向归约函数
  • 原理:invReduceFunc(reduceFunc(x, y), x) = y

优化思想:减少重复运算

// 必须设置检查点才能执行【invReduceFunc版】的reduceByKeyAndWindow
ssc.checkpoint("checkpoint")
// 【invReduceFunc版】的reduceByKeyAndWindow
val dS: DStream[(String, Int)] = iDS.map((_, 1)).reduceByKeyAndWindow(
  reduceFunc = (a: Int, b: Int) => (a + b),
  invReduceFunc = (a: Int, b: Int) => (a - b),
  windowDuration = Seconds(20),
  slideDuration = Seconds(10)
)

2.4、以上3种写法的结果打印

3、源码

3.1、window

def window(windowDuration: Duration, slideDuration: Duration): DStream[T] = ssc.withScope {
  new WindowedDStream(this, windowDuration, slideDuration)
}

返回一个继承DStream的WindowedDStream

3.2、reduceByKeyAndWindow

对应上面2.2

def reduceByKeyAndWindow(
        reduceFunc: (V, V) => V,
        windowDuration: Duration,
        slideDuration: Duration,
        partitioner: Partitioner
    ): DStream[(K, V)] = ssc.withScope {
    self.reduceByKey(reduceFunc, partitioner)
        .window(windowDuration, slideDuration)
        .reduceByKey(reduceFunc, partitioner)
}

对应上面2.3,多了invReduceFunc、filterFunc

def reduceByKeyAndWindow(
        reduceFunc: (V, V) => V,
        invReduceFunc: (V, V) => V,
        windowDuration: Duration,
        slideDuration: Duration,
        partitioner: Partitioner,
        filterFunc: ((K, V)) => Boolean
    ): DStream[(K, V)] = ssc.withScope {

    val cleanedReduceFunc = ssc.sc.clean(reduceFunc)
    val cleanedInvReduceFunc = ssc.sc.clean(invReduceFunc)
    val cleanedFilterFunc = if (filterFunc != null) Some(ssc.sc.clean(filterFunc)) else None
    new ReducedWindowedDStream[K, V](
        self, cleanedReduceFunc, cleanedInvReduceFunc, cleanedFilterFunc,
        windowDuration, slideDuration, partitioner
    )
}

返回ReducedWindowedDStream

OFDM调制matlab仿真详细代码 MATLAB仿真代码 % ================================================== % 作者: 肆拾伍 % 时间:11/30 2019 % 版本:V3 % =================OFDM仿真参数说明:================ % % 子载波数 carrier_count ---200 % 总符号数 symbol_count ... 阅读详情

相关推荐

rcoswindow.m

在matlab上实现的仿真代码模块,ofdm处理过程中的加窗模块,窗函数部分的代码描述,仅供参考,欢迎交流

分别在高斯信道和瑞丽信道中对16QAM+OFDM进行误码率仿真

其实这是一种查表的方法,以16QAM星座为例,bits_per_symbol=4,则每个OFDM符号的每个子信道上有4个二进制数{d1,d2,d3,d4},共有16种取值,对应星座图上16个点,每个点的实部记为Qch。每个子信道上的信号带宽小于信道的相关带宽,因此每个子信道上可以看成平坦性衰落,从而可以消除码间串扰,而且由于每个子信道的带宽仅仅是原信道带宽的一小部分,信道均衡变得相对容易。在实际运用中, 信号的产生和解调都是采用数字信号处理的方法来实现的, 此时要对信号进行抽样, 形成离散时间信号。

FPGA/MATLAB学习教程/源码/项目合作开发 2133

告别复杂配置:利用原生DDNS实现IPv6直连群晖的极简指南

本文详细介绍了如何利用原生DDNS实现IPv6直连群晖NAS的极简方法,告别复杂配置。从检查IPv6网络环境、路由器防火墙设置到群晖DDNS配置,一步步指导用户完成设置,并分享移动网络下的使用体验和安全防护建议,帮助用户轻松实现远程访问。

weixin_30918633的博客 414

大数据系列六:Spark实时流计算-滑动窗口(sliding window)

一.前言 为什么会有流计算? 因为有流^_^ 为什么会有流? 这个原因比较复杂,部分是因为RDBMS解决不了,部分是为了解耦,部分是因为数据价值密度太低…,部分是因为架构^_^ 二.概念 窗口:指定了时间长度和延时长度的时间段(长度也就是时间),比如:长度是5分钟,并且允许有1分钟的延迟。 窗口的创建时间:第一个元素到达就创建。 窗口的销毁时间:在窗口时间长度+延时长度到时。 每个窗口都会绑定一个触发器和一个执行函数,触发器定义了何时会触发窗口的执行函数的计算,比如水位经过了窗口结束时间的时候 窗口产生的目

dustzhu的博客 1860

2025年VSCode AI插件实战:如何用Devika+Continue+Tabby三件套10倍提升开发效率

本文详细介绍了2025年VSCode AI插件Devika、Continue和Tabby的三件套组合,如何通过智能开发工作流10倍提升开发效率。从项目架构生成到上下文感知辅助,再到本地化智能编码,这套方案实现了从需求分析到代码生成的全流程自动化,特别适合中大型项目开发。

weixin_26911099的博客 273

Palabos 并行计算与多物理场模拟实战指南

本文详细介绍了Palabos在并行计算与多物理场模拟中的实战应用。作为基于C++和LBM的开源CFD工具,Palabos通过MPI实现高效并行计算,特别适合处理复杂流体模拟问题。文章涵盖从基础安装、多物理场耦合技巧到性能优化策略,并分享工业级应用案例与调试经验,帮助开发者快速掌握这一强大工具。

4k5l6j7h8的博客 245

实时大数据计算中,Spark的滑动窗口和允许消息迟到机制

本文总结了实时大数据分析项目中关于Spark流处理核心参数的配置与运作机制。项目采用Java17+、Scala2.13和Spark4.0.0,基于Kafka创建读取流。重点解析了四个关键参数:windowDuration控制聚合粒度(10秒),slideDuration决定聚合频率(5秒),watermark(20秒)管理迟到数据,trigger(1秒)调节处理节奏。通过时间轴示例展示了窗口重叠生成过程(W1-W4)及触发器在不同时间点的输出行为,完整呈现了事件时间与处理时间的协调机制。文章提供了配置代码片

sword_csdn的博客 931

(53页PPT)新型智慧病房整体解决方案(附下载方式)

当前医疗场景存在三大核心矛盾:院内感染风险(如输液异常发现滞后)、信息孤岛现象(11类业务系统数据割裂)、管理效能不足(30%护理时间耗费在机械性工作)。实际案例显示,整体运营效率提升40%,患者满意度提高28个百分点,真正实现了"让技术有温度,让数据会说话"的价值理念。本文将从需求分析、技术架构、应用场景三个维度,深度剖析这份53页解决方案的创新价值与实践路径。床旁智能终端整合12项功能:包括体征自动采集(误差率<1%)、医嘱执行核对(100%条码校验)、智能床垫离床报警(响应时间3秒)等。

AI_data_cloud的博客 716

OFDM系统仿真【matlab代码】

一.仿真思路 为了便于计算把系统的仿真参数设置的较小。仿真参数为:子载波个数为 200,总符号数为100,IFFT/FFT 的长度为 512,调制方式选用16QAM调制,为了最大限度的减少插入保护间隔带来的信噪比损失,一般选择符号周期长度是保护间隔长度的5倍,所以保护间隔的长度为有效符号周期的1/4,故设循环前缀的长度为128,信噪比为20dB。 1.产生0-1随机序列 使用函数rand(),生成随机0-1串行序列,个数为:子载波个数总符号数4。 bit_length = carrier_countsym

qq_44394952的博客 3万+

面试问题总结——关于OpenCV(一)

整理了一下网上和我面试中遇到的关于OpenCV相关的问题。 其中因为我的简历中有个项目用到了特征点检测相关的知识,所以整理了SIFT/SURF和FLANN。 有些知识点也不深入,对于写的不对的地方,欢迎指正。 关于OpenCV的内容 1.OpenCV中cv::Mat的深拷贝和浅拷贝问题   深拷贝:分配新内存的同时拷贝数据,当被赋值的容器被修改时,原始容器数据不会改变。   浅拷贝:仅拷贝数据,当被赋值容器修改时,原始容器数据也会做同样改变。 OpenCV的Mat时,有几种赋值方式分别为:   深.

boss-dog 1万+

Fiori Elements 从入门到精通开发教程的文章目录

Fiori Elements 开发技术相对 SAP 其他历史悠久,发展成熟的开发技术来说,是一个新事物。正因如此,迄今为止国内深入讲解 Fiori Elements 应用的中文材料几乎没有。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 4864

倒排索引(信息检索-python代码)

通过实验理解倒排索引的构建过程;掌握采用倒排索引做一个简单的搜索引擎,实现对关键字的检索。提示:以下是本篇文章正文内容,下面案例可供参考实验1:采用倒排索引做一个用数组模拟文档的简单的搜索引擎;实验2:改写实验1,实现对文档的倒排索引。

m0_61417342的博客 797

【目标追踪】python背景模型减除法原理及其实现

python基于背景模型差法的视频目标追踪帧差法的问题:背景模型差法目标追踪原理1. 基本思路:2. 图例讲解:3. 存在的问题&如何解决:4. 最终效果预览第一步——调用摄像头:1. 使用opencv打开视频or摄像头:2. 读取逐帧图片:第二步——处理图片:1. 转换成灰度图:3. 累加权重重构背景:3. 计算像素差:3. 使用中值滤波和膨胀腐蚀去噪:3.1 中值滤波:3.2 图像腐蚀...

梁瑛平的博客 1948

python倒排索引

倒排索引一般用在你已经知道有些值,你想返回去去找到对应的关系就可以用这种方法,其实就是一个字典反过来查找 def false_index(index_set): all_words = [] for i in index_set.values(): cut = i.split() all_words.extend(cut) # set_all_words = set(all_words) # 构建倒排索引 invert_index =

lzay的博客 2428

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

Python实战:在搜索引擎开发中的倒排索引与检索算法

本文详细介绍了使用Python构建搜索引擎的过程,包括倒排索引的构建、检索算法的实现、搜索引擎的评估和优化。我们通过一个简单的例子展示了如何将这些技术结合起来,创建一个能够处理用户查询并返回相关文档的搜索引擎。然而,实际的搜索引擎开发要复杂得多,涉及到分布式计算、大数据处理、机器学习等多个领域的技术。在实际开发中,我们还需要考虑如何处理海量数据,如何提高系统的并发能力和可用性,如何应对恶意攻击和垃圾信息等问题。此外,随着技术的发展,搜索引擎也在不断地引入新的技术和算法,以提高搜索质量和用户体验。

oandy0的博客 3132

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

信息检索的简单核心算法——倒排索引(python示例)

倒排索引英文名是,翻译过来就是倒排索引。但是,我们不要被这个中文名唬住了。这个名字看上去的意思是把元素倒过来排序再获取索引,但是实际上的意思并不是这样。假如我们有n篇文档,现在要输入关键词进行搜索。如果这个关键词是"test",那么正常的思路是遍历每个文档的所有单词,如果含有"test",就获取这个文档的id。但是,这样太费时间了,**如果我们在检索之前,就把每个word和含有这个word的文档id储存下来,那么检索时我们只要找到对应的word,就可以获取含有该word的所有文档的id。

qq_73075805的博客 1369

VC中sqlite的使用

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

python 倒排索引(Inverted Index)

倒排索引是一种检索方式,比如存入数据库的数据是存一篇文章进去,然而检索时我们经常需要通过关键词检索,所以提前做好倒排索引即可方便检索,而省略掉全表扫描的问题了,这是一种用空间换时间的方法。 使用字典构造倒排索引 sentences = ['This is the first word', 'This is the second text Hello How are you', 'This is the third, this is it now'] sen

呆萌的代Ma 4561

matlab中rcosdesign函数的解释

直接来描述一下:b = rcosdesign(beta,span,sps,shape)beta: 滚降系数,取值0~1之间,决定频宽和陡峭程度。取值一般大于0.2。span: 表示截断的符号范围。sps: 单个符号范围的采样个数。shape:可选参...

Brandon的博客 1万+

一文读懂matlab中rcosdesign函数(成型滤波器)

直接来描述一下: b = rcosdesign(beta,span,sps,shape) beta: 滚降系数,取值0~1之间,决定频宽和陡峭程度。取值一般大于0.2。 span: 表示截断的符号范围。 sps: 单个符号范围的采样个数。 shape:可选参数。可不加,可加上'normal',可加上'sqrt'。 当选择'sqrt'时,返回一个平方根升余弦滤波器。 下图是滚降系数不同...

lanluyug的博客 4万+

一种使用16QAM的OFDM系统MATLAB仿真

一种完整的OFDM系统MATLAB仿真

DanielWu2020的博客 3958

cos_window(python)

1. crop_sz=107 cos_window = torch.Tensor(np.outer(np.hanning(crop_sz), np.hanning(crop_sz))).cuda() import matplotlib.pyplot as plt from matplotlib import cm from mpl_toolkits.mplot3d import Axes3D...

wuguangbin1230的博客 650

MATLAB程序:OFDM信号发送与接收

clear all; close all; carrier_count=200;%子载波数 symbols_per_carrier=12;%每子载波含符号数 bits_per_symbol=4;%每符号含比特数,16QAM调制 IFFT_bin_length=512;%FFT点数 PrefixRatio=1/4;%保护间隔与OFDM数据的比例 1/6~1/4 GI=PrefixRatio*IFF...

chuancyli的博客 1万+

【大数据管理】Python实现带位置的倒排索引

在倒排索引中,每个词项都有一个记录出现该词项的所有文档的列表,该表中的每个元素记录的是词项在某文档中的一次出现信息,这个表中的每个元素通常称为倒排记录,每个词项对应的整个表称为倒排记录表,所有词项的倒排记录表一起构成全体倒排记录表。之后进行语言学的预处理,加载停用词,去除标点、数字等,将文本拆分成(词语,位置)的二元组形式,并将这些二元组存入word_list列表;根据倒排索引实现某个标签的小说有哪些,例如查询所有古典小说,结果是西游记,水浒传,三国演义。三国演义 古典小说 历史。水浒传 古典小说 历史。

m0_53700832的博客 1216

Python 倒排索引

倒排索引 倒排索引(Inverted index),也常被称为反向索引,是一种索引方法,用来存储某个单词存在于哪些文档之中。是信息检索系统中最常用的数据结构。通过倒排索引,可以根据单词快速获取包含这个单词的文档列表。 主要完成以下三个功能: (1).建立索引:首先输入100行字符串,用于构建倒排索引,每行字符串由若干不含标点符号的、全部小写字母组成的单词构成,每个单词之间以空格

Code & Technology Sharing 7190
上一篇: 概率基础
下一篇: 多标签(multilabel)分类
小基基o_O
博客等级 码龄9年 4414粉丝 467原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

打赏作者

小基基o_O

您的鼓励是我创作的巨大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值