在许多MapReduce程序中,我看到一个reducer也被用作组合器.我知道这是因为这些计划的具体性质.但我想知道他们是否会有所不同.
在MapReduce框架中,映射器生成的每个密钥都使用一个reducer.
所以你会认为在Hadoop MapReduce中指定Reducers的数量没有任何意义,因为它依赖于程序.但是,Hadoop允许您指定要使用的reducer的数量(-D mapred.reduce.tasks =#reducers).
这是什么意思?减速器数量的参数值是否指定减少器的数量而不是实际减速器的数量?
代码胜于语言,因此:
['a', 'b', 'c'].reduce((accumulator, value) => accumulator.concat(value), []);
Run Code Online (Sandbox Code Playgroud)
该代码非常愚蠢,并返回一个复制的数组...
TS抱怨concat的参数:TS2345:类型'string'的参数不能分配给'ConcatArray'类型的参数。
我试图找出当服务器响应分页时如何设计 NgRx 存储。
如果我们一次在商店中只保留一页,那么使用 NgRx 到底有什么意义呢?
如果我们为所有页面保留插槽并在第一次调用该特定页面时填充存储中的每个页面,那么如何处理每个请求可能不同的 page_size,...查询参数。
如何处理 NgRx 中的过滤和排序。是否值得保留带有太多查询参数的响应?
我当前的界面就像
res : {
pagination: {
page: 1,
page_size: 25,
total_items: 10000,
total_pages: 400
},
data: [array of 25 objects]
}
Run Code Online (Sandbox Code Playgroud) (require '[clojure.core.reducers :as r])
(def data (into [] (take 10000000 (repeatedly #(rand-int 1000)))))
(defn frequencies [coll]
(reduce (fn [counts x]
(merge-with + counts {x 1}))
{} coll))
(defn pfrequencies [coll]
(r/reduce (fn [counts x]
(merge-with + counts {x 1}))
{} coll))
user=> (time (do (frequencies data) nil))
"Elapsed time: 29697.183 msecs"
user=> (time (do (pfrequencies data) nil))
"Elapsed time: 25273.794 msecs"
user=> (time (do (frequencies data) nil))
"Elapsed time: 25384.086 msecs"
user=> (time (do (pfrequencies data) nil))
"Elapsed time: 25778.502 …
Run Code Online (Sandbox Code Playgroud) 我有一个带有过滤器的 ReactJS 应用程序,并使用 RESET 函数来重置这些过滤器。
我也使用过:Redux、Redux Persist 和 React-router-dom。
如果我查看 Redux Devtools,它似乎有效。但是应用程序没有正确重新渲染,需要刷新 (f5)。
我想要实现的目标:用initialState 对象覆盖configuredFilters 对象。
这是我的根减速器:
const rootReducer = (state = initialState, action) => {
let newState = state;
if (action.type === 'RESET_FILTERS') {
storage.removeItem('persist:configuredFilters');
// eslint-disable-next-line no-param-reassign
newState = { ...newState,
configuredFilters: JSON.parse(JSON.stringify(initialState.configuredFilters))
};
}
return appReducer(newState, action);
};
Run Code Online (Sandbox Code Playgroud)
这是差异(我之前配置了两个国家):
这是对象(如果页面已加载,则为初始状态):
组件是用这个组件创建的:
/* eslint-disable max-len */
import React from 'react';
import { useSelector, shallowEqual, useDispatch } from 'react-redux';
import { Form, Select } from 'antd';
import PropTypes from …
Run Code Online (Sandbox Code Playgroud)我试图通过AWS(流媒体工作)创建一个仅限映射器的工作.reducer字段是必需的,所以我给出一个虚拟可执行文件,并将-jobconf mapred.map.tasks = 0添加到Extra Args框中.在我安装的hadoop环境(版本0.20)中,不会启动任何reducer作业,但在AWS中,虚拟可执行文件启动并失败.
如何在AWS中运行no reducer/mapper作业?
在她的演讲中,Clojure Bodil 的未来提出以下主张:
盖伊斯蒂尔在ICFP上发表了一篇名为" 组织并行执行功能代码"(或者,折叠和折叠考虑稍微有害)的演讲(同样在ACM中).
其中盖伊斯蒂尔在幻灯片70中断言:
一旦你说"第一次
SUM = 0
",你就被冲洗了.对于并行性,累加器是不可靠的.请注意,foldl
和foldr
,虽然功能,从根本上累积.
这有点有趣.所以Bodil说Guy Steele正在呼唤一个问题.然后她声称Rich用Reducers(以及Transducers,它是这种思路的延续)来解决它.在16:11 的Transducers演讲中,我们看到Rich发表了一些特别的论文foldr
.
Rich有效地说fold
s是可组合的 - 你可以用它们来构建其他更高阶的函数,比如map
和filter
.
我的问题是 - 博迪尔对吗?Rich有没有解决Guy Steele设置的问题?减速器(在Clojure中)是否解决了Guy Steele概述的缩放倍数累积问题?
我喜欢在终极版减速器组成的概念,但遇到了这样一个场景,我就喜欢拆减速,但后来孩子们减速将依靠从其他国家的切片,使他们的变化.
例如
在我的州,我需要跟踪以下内容:
[ 2, 3, 4, 5, 6 ]
)[ 1 .. (selectedRank - 1) ]
最初,我有一个更大的减速器,它封装了所有这些方面:
function rankAndTraining(state = {
selectedRank : 4,
availableRanks : [ 2, 3, 4, 5, 6 ],
availableTrainingLevels : [ 1, 2, 3 ],
selectedTrainingLevel : 2,
}, action) {
.
.
.
case SELECT_RANK:
let newRank = action.rank;
if(!availableRanks.contains(newRank)) {
// If new rank is …
Run Code Online (Sandbox Code Playgroud) 我有一个减速器,我在调度动作时重新调整适当的状态.现在我定期调用API,结果会一次又一次地触发一个动作.所以我想要的是,如果reducer状态已经有数据,那么另一个reducer在调用发送时不会显示加载状态.仅在第一次接收数据时必须保持其加载状态.我希望我能够正确解释它
这是我的代码片段
装载状态减速机
const loading = (state = false, action) => {
switch (action.type) {
case 'GET_AUDIT_DATA': // here I want to return true only when there is no data available
return true
case 'GET_AUDIT_DATA_RECEIVED':
return false
case 'GET_AUDIT_DATA_ERROR':
return false
default:
return state
}
}
Run Code Online (Sandbox Code Playgroud)
结合减速器
const allReducers = combineReducers({
auditData: AuditData,
auditLoading: AuditLoading,
modifiedOrders: ModifiedOrders
});
export default allReducers;
Run Code Online (Sandbox Code Playgroud)
Reducer返回由superagent触发的动作数据
const auditData = (state = [], action) => {
switch(action.type) {
case 'GET_AUDIT_DATA_RECEIVED':
console.log(action.data);
return action.data;
case 'GET_AUDIT_DATA_ERROR': …
Run Code Online (Sandbox Code Playgroud) reducers ×10
mapreduce ×3
clojure ×2
hadoop ×2
javascript ×2
reactjs ×2
redux ×2
angular ×1
combiners ×1
fold ×1
ngrx ×1
pagination ×1
react-redux ×1
reduce ×1
store ×1
typescript ×1