首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在尝试读取数据之前,是否等待reducer取回数据?

在尝试读取数据之前,是否等待reducer取回数据取决于具体的应用场景和需求。在一些情况下,等待reducer取回数据是必要的,而在其他情况下,可以选择不等待。

在Redux中,reducer是用于处理应用状态变化的纯函数。当我们在应用中触发一个action时,reducer会根据action的类型来更新应用的状态。在这个过程中,我们可以选择等待reducer完成状态更新后再继续读取数据,也可以选择不等待。

如果我们需要确保在读取数据之前应用的状态已经更新,可以选择等待reducer取回数据。这通常发生在需要基于最新状态进行计算或决策的情况下。在这种情况下,我们可以使用Redux提供的一些机制来等待reducer完成状态更新,例如使用Redux的中间件或异步操作库(如redux-thunk、redux-saga等)来处理异步操作,并在操作完成后再继续读取数据。

然而,在某些情况下,等待reducer取回数据可能并不是必要的。例如,在某些简单的场景下,我们可能只需要读取当前的应用状态,而不需要等待reducer完成状态更新。在这种情况下,我们可以直接读取当前的应用状态,而无需等待reducer。

总之,是否等待reducer取回数据取决于具体的应用需求。在某些情况下,等待reducer取回数据是必要的,而在其他情况下,可以选择不等待。具体的实现方式可以根据具体的应用场景和需求来选择合适的方法。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

原 Spark Shuffle

Spark 0.8之前,Shuffle Write是持久化到缓存的,但后来发现实际应用中,shuffle过程带来的数据通常是巨量的,所以经常会发生内存溢出的情况,所以Spark 0.8以后,Shuffle...因此下游的Task计算时会通过网络(如果该Task与上游的Shuffle Map Task运行在同一个节点上,那么此时就是一个本地的硬盘读写)读取这个文件并进行计算。 ?     ...正如前面提到的,Hash Based Shuffle的每个Mapper都需要为每个Reducer写一个文件,供Reducer读取,即需要产生M*R个数量的文件,如果Mapper和Reducer的数量比较大...时是否需要将部分数据临时写入外部存储。...2>设置spark.shuffle.spill.compress     如果设置为true,代表处理的中间结果在spill到本地硬盘时都会进行压缩,将中间结果取回进行merge的时候,要进行解压。

1.5K50

Project Reactor 深度解析 - 1. 响应式编程介绍,实现以及现有问题

假设现在评论缓存突然挂了,全都访问数据库,导致请求变慢。由于线程需要等待 IO 响应,导致唯一一个线程池被堆满,无法处理获取回答的请求。...null) { resultVO.setVoteCount(voteCount); } //从数据读取回答信息...else { //获取成功,设置voteCount resultVO.setVoteCount(voteCount); //从数据读取回答信息...之后数据库返回数据,这个链接的 Selector 会有 Read 事件准备就绪,这时候,再通过这个线程池去读取数据处理(相当于回调),这时候用的线程和之前不一定是同一个线程。...但是也就解决方案,就是通过其他线程池,专门处理数据库请求并等待返回进行回调,也就是业务线程池 A 将数据库 BIO 请求交给线程池B处理,读取数据之后,再交给 A 执行剩下的业务逻辑。

1.2K30
  • 数据之Hadoop面试官的11个灵魂拷问!

    读流程 1、客户端会先带着读取路径向NameNode发送读取请求 2、NameNode接收到请求后,会先判断是否有权限,读取文件是否存在等等,如果都无误则将文件所在的DataNode的节点位置,发送给客户端部分或者全部的...DataNode的节点位置 3、客户端得到文件块存储的位置后,会调用read()方法,去读取数据 4、在读取之前会先进行一个checksum的操作,去判断一下校验和是否正确,正确则读,不正确则去下一个存放该...block块的DataNode节点上读取 5、读取完NameNode这次发送过来的所有的block块后,会再去询问是否还有block块,如果有则接着读取,如果没有则调用close方法,将读取到的文件合并成一个大文件...1.客户端执行submit()方法之前,会先去获取一下待读取文件的信息 2.将job提交给yarn,这时候会带着三个信息过去(job.split(文件的切片信息),jar.job.xml) 3.yarn...1、提前map进行combine,减少传输的数据量 2、数据倾斜的key 大量分布不同的mapper 2.1「局部聚合加全局聚合」 二次mr,第一次将key随机散列到不同 reducer进行处理达到负载均衡目的

    40560

    剥开比原看代码17:比原是如何显示交易的详细信息的?

    由于它分成了前后两端,那么我们跟以前一样,把它再分成两个小问题: 前端是怎么向后台发送请求,并显示数据的 后端是如何拿到相应的数据发送给前台的 需要说明的是,这个表格中包含了很多信息,但是我们本文并不打算去解释...replace) => { loadPage(nextState, replace) } }, childRoutes: childRoutes } } 这段代码看起来眼熟,因为我们之前研究余额和交易的列表显示的时候...我开始以为它是我们从后台取回来的一些数据,使用transaction这个名字放到了store里,结果怎么都搜不到,最后终于发现原来不是的。...实际情况是,我们定义reducer的地方,有一个makeRootReducer: src/reducers.js#L1-L62 // ... import { reducers as transaction...由于type本文中是transaction,通过一步步追踪(这里稍有点麻烦,不过我们之前的文章中已经走过),我们发现actions[type].fetchAll对应了src/features/shared

    44110

    如何用 Pandas 存取和交换数据

    所以,在这个过程中,你大概率会经常遇到数据的交换问题。 有时候,是把分析结果存起来,下次读取回来继续使用。 更重要的时候,是把一个工具的分析结果导出,导入到另一个工具包中。...处理中文文本信息时,我们经常需要做的一件事情,就是分词。 这里,我们把之前两句话进行分词后,再尝试保存和读取。 为了分词,我们先安装一个jieba分词包。 !...存储的过程中,列表内部,每个元素都用单引号包裹。整体列表的外部,被双引号包裹。 至于分割符嘛,依然是逗号。 看着是不是很正常? 我们来尝试把它读取回来。...但是,我们把它和导出之前数据框对比一下,你来玩儿一个“大家来找茬”游戏吧。 ? 注意,导出之前,列表当中的每一个元素,都没有引号包裹的。 但是重新读取回来的内容,每一个元素多了个单引号。...df_list_loaded = pd.read_pickle("data.pickle") 我们来看看读取回来的数据是否正确: df_list_loaded ?

    1.9K20

    Hadoop、Spark、Kafka面试题及答案整理

    spill写入之前,会先进行二次排序,首先根据数据所属的partition进行排序,然后每个partition中的数据再按key来排序。...partition的目是将记录划分到不同的Reducer上去,以期望能够达到负载均衡,以后的Reducer就会根据partition来读取自己对应的数据。接着运行combiner(如果设置了的话)。...因为Map端进行partition的时候,实际上就相当于指定了每个Reducer要处理的数据(partition就对应了Reducer),所以Reducer拷贝数据的时候只需拷贝与自己对应的partition...开始往A上传第一个block(先从磁盘读取数据放到一个本地内存缓存),以packet为单位,A收到一个packet就会传给B,B传给C;A每传一个packet会放入一个应答队列等待应答 7、当一个block...RDD中reduceBykey与groupByKey哪个性能好,为什么 reduceByKey:reduceByKey会在结果发送至reducer之前会对每个mapper本地进行merge,有点类似于

    1.2K21

    Kubernetes中从头开始构建MapReduce

    动机问题 假设我们想计算海量数据集中的词频。我们尝试单台机器上处理它,但发现需要一个月以上的时间。我们能做什么? 第一个想法应该是获得一台更快的机器,但它可能不存在或太昂贵。...请注意,这是非常通用的,想象一下我们有一个大型照片数据集,我们希望对其进行分类:我们可以将图像分类任务作为映射操作,然后归约阶段将具有相同类别的图像分组。...每当我们从堆中弹出数据时,我们从对应文件中读取下一行并将其推入堆中。这为我们提供了一种高效内存读取键值对流的方式!你可以在此处找到实现。...这是集群拉取我们之前推送的镜像的时候!...进入归约器之前,让我们看看其中一个映射器生成的中间文件: michal@michal-ThinkPad-T490s:/mnt/nfs/job-2024-04-28-17-13-53/mapper-3$

    13410

    面试问题之 3.2新的特性Push-based Shuffle源码解析

    如果单个 shuffle 块大小较小,则 shuffle 服务产生的小随机读取会严重影响磁盘吞吐量,从而延长 shuffle fetch 等待时间。 第三个挑战是扩展问题。...不过除此以外还会将shuffle中连续的块分到同一个请求中,可以允许更有效的数据读取。...当shuffle service接收到 block 块时,尝试添加到对应的 shuffle 合并文件之前,它首先要检索相应的 Shuffle 分区元数据。...写当前正在处理的 ByteBuffer 前,会将前面列表中的数据都写入到数据文件中。 onComplete进行合并时,会先判断是否满足合并的条件。...最后ShuffleBlockFetcherIterator.next读取数据时,将获取元数据进行模式匹配: case PushMergedRemoteMetaFetchResult(

    90430

    React+Redux 组合使用之感受

    有不少 JavaScript 框架尝试解决解耦问题,但是到了落实的层面上很容易出现分层分模块不容易严格控制,缺少清晰标准等问题。...每一个小模块对应有规约路径和命名的 scss,应用中基本上没有出现层次混乱的情况。...当然也不尽美,其中一个容易混乱的地方在于传递的数据模型的设计,比如从服务端取回的对象,之后的数据处理可以放在 action 中,可以放在 reducer 中,甚至也可以放在 view 中——这是由(1)...“到底想给 reducer 传递怎样的消息” 和(2)“ store 中要存储怎样的数据结构” 来决定的。...但是凡事有利有弊,大型项目的时候这一点明显增加了可维护性,但是也明显让项目的代码显得臃肿。基本上每添加一个小小的功能,都要从 action->reducer->view 等等一层一层写好多代码。

    29520

    2022年Hadoop面试题最全整理,两万字干货分享【建议收藏】

    发送给B,然后B发送给c,A发送完一个包后会将其放入一个响应队列中等待响应; 6.数据被分成数据包,依次流水线上传输。...直接带回NameNode是否检查结果; 2.辅助NameNode请求执行检查点;; 3.NameNode滚动正在写入的编辑日志; 4.滚动到辅助NameNode之前,复制编辑日志和图像文件;; 5.次...围栏期间,将执行以下操作: 1.首先尝试调用这个旧的活动NameNode的HAServiceProtocol RPC接口的transitionToStandby方法,看看是否可以转换到备用状态。...7.合并覆盖的文件,每次覆盖都会在磁盘上生成一个临时文件(写之前判断是否有合并器)。如果Mapper的输出结果真的很大,而且有很多次的重写,磁盘上会有几个临时文件。...当进行故障转移时,Standby 成为 Active Namenode 之前,会确保自己已经读取了 Journal Node 中的所有 edit 日志,从而保持数据状态与故障发生前一致。

    1.1K10

    Map Reduce和流处理

    Map/Reduce的标准模型中,reduce阶段map阶段完成之前无法启动。而且在下载到reducer之前,所有处理过程的中间数据都保存在磁盘中。所有这些都显著增加了处理的延迟。...本篇文章中,我尝试了一些基于Map/Reduce模型的执行低延迟并行处理的技术。...这意味着mapper完成处理后会将数据推送到reducer,并让reducer数据进行排序。这种方法的缺点是它没有机会去运行地图侧的combine()函数以降低带宽使用率。...HOP提出了一种自适应流控制机制,该方式下数据会被尽快推送到Reducer,直到Reducer被重载并退回(使用某种流量控制协议)。...“切片(Slice)”定义了执行reduce处理之前所累计结果的时间窗口。这也是mapper发送到reducer之前应积累的最小数据量。 “范围(Range)”定义了结果所汇总的时间窗口。

    3.1K50

    Java ConcurrentHashMap 高并发安全实现原理解析

    HashMap本身并非为多线程环境设计,永远不要尝试并发环境下直接使用HashMap,C13Map不存在这个安全问题。...结论:对于链表这种线性数据结构,单线程写且插入操作保证是后入式的前提下,并发读取是安全的;不会存在误读、链表断开导致的漏读、读到环状链表等问题。...是否有可能A线程进入了等待区,B线程获取了写锁,释放写锁时仅做了lockState=0的操作。 那么A线程是否就没有机会被唤醒了,只有等待下一个读锁释放时的唤醒了呢 ?...5、如果读取的bin是一个ForwardingNode 说明当前bin已迁移,调用其find方法到nextTable读取数据。...如果不作doubleCheck判断,则有可能当前槽位已被transfer,写入的还是旧表的BIN,从而导致写入数据的丢失;也有可能在获取到f的同步锁之前,其它线程对该BIN做了treeify操作,并将头节点替换成了

    62930

    MapReduce Combiner

    Combiner是Mapper和Reducer之间运行的,并且只Mapper端运行,不会在Reducer端运行。...Combiner的输出会作为Mapper的输出写入到本地磁盘中,等待Reducer进行最终的聚合。...为什么需要使用MapReduce CombinerMapReduce任务中,如果Mapper的输出数据量非常大,那么传输数据Reducer之前,需要将数据写入到磁盘中,这将消耗大量的时间和磁盘空间...具体来说,使用Combiner可以带来以下好处:减少网络传输:通过Mapper端进行本地聚合,Combiner可以减少需要传输到Reducer数据量,从而减少了网络传输的负载。...Mapper和Reducer中,我们分别将相同的WordCountReducer作为reduce方法的实现,这是因为Combiner的输入和输出数据类型必须与Mapper和Reducer的输入和输出数据类型相同

    42530

    如何使用Python为Hadoop编写一个简单的MapReduce程序

    Map: mapper.py 将下列的代码保存在/home/liupeng/hadoop/mapper.py中,他将从STDIN读取数据并将单词成行分隔开,生成一个列表映射单词与发生次数的关系: 注意...Reduce: reducer.py 将代码存储/home/liupeng/hadoop/reducer.py 中,这个脚本的作用是从mapper.py 的STDIN中读取结果,然后计算每个单词出现次数的总和...像我上面所说的,我们使用的是 HadoopStreaming 帮助我们传递数据Map和Reduce间并通过STDIN和STDOUT,进行标准化输入输出。...一个重要的备忘是关于Hadoop does not honor mapred.map.tasks 这个任务将会读取HDFS目录下的gutenberg并处理他们,将结果存储独立的结果文件中,并存储HDFS...当Hadoop集群执行时,你可以使用浏览器访问 http://localhost:50030/  ,如图: 检查结果是否输出并存储HDFS目录下的gutenberg-output中: hadoop

    2.2K50

    【Spark重点难点】你以为的Shuffle和真正的Shuffle

    远程的block读取是通过向BlockTransferService这个服务发送读取数据块请求来获取数据数据。那么如何区分是从本地读,还是从远程读取呢?...接着,每写一条数据进入内存数据结构之后,就会判断一下,是否达到了某个临界阈值。如果达到临界阈值的话,那么就会尝试将内存数据结构中的数据溢写到磁盘,然后清空内存数据结构。...溢写到磁盘文件之前,会先根据 key 对内存数据结构中已有的数据进行排序。排序过后,会分批将数据写入磁盘文件。...最后会将之前所有的临时磁盘文件都进行合并,这就是merge 过程,此时会将之前所有临时磁盘文件中的数据读取出来,然后依次写入最终的磁盘文件之中。...缺点 如果 Mapper 中 Task 的数量过大,依旧会产生很多小文件,此时 Shuffle 传数据的过程中到 Reducer 端, Reducer 会需要同时大量地记录进行反序列化,导致大量内存消耗和

    3.3K40

    串口通信-MSComm控件使用详解

    Byte 或array of Variant.在读取之前先设置RcvByte的长度:SetLength(RcvByte,len),如果一次读取所有数据,则SetLength(RcvByte, MSComm1...InputLen属性:一次从Input属性中读取数据的长度, MSComm1.InputLen:=1,表示一次读取一个字节,如果MSComm1.InputLen:=0,则表示一次读取全部数据 MSComm1...语法 object.Rthreshold [ = value ](value 整型表达式,说明产生 OnComm 事件之前要接收的字符数。...语法 object.SThreshold [ = value ] value 整形表达式,代表 OnComm 事件产生之前传输缓冲区中的最小字符数。...使用 Input 前,用户可以选择检查 InBufferCount 属性来确定缓冲区中是否已有需要数目的字符。该属性在从输出格式为定长数据的机器读取数据时非常有用。

    3.6K20
    领券