用于排序键值对的Map Reduce

2024-09-27 07:27:39 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试编写一个简单的Map Reduce程序来对键值对进行排序。我的数据是一个.txt文件,数值后跟空格,然后是其他字符。例如

1 fdsaf

17 fdaasdfe

0 jowf453g

我编写了以下Matlab脚本和map/reduce函数:

ds = tabularTextDatastore('test.txt');
outds = mapreduce(ds, @Map, @Reduce);
readall(outds)

reset(ds);
function Map(data, ~, KVStore)
    keys = data.Var1;
    values = data.Var2;
    addmulti(KVStore, keys, values)
end
function Reduce(intermKey, intermValIter, outKVStore)
    while hasnext(intermValIter)
       val = getnext(intermValIter); 
    end
    add(outKVStore, intermKey, val)
end

尽管我从未调用过任何排序函数(尽管在旧版本的Matlab上运行这个函数不会返回排序后的数据),但这会令人惊讶地返回排序后的键值对。不幸的是,它删除了键为0的所有行。因此,我正在寻找一种解决此问题的方法,或者对另一种方法提出建议。我致力于Map Reduce,因为它的目标是在太大而无法放入内存的数据上运行,但我愿意使用其他语言,比如Python


Tags: 数据函数txtmapreducedata排序ds

热门问题