c# - 如何使用 map reduce 进行多维向量乘法?
问题描述
我试图关注这篇文章:https ://developerzen.com/introduction-to-mapreduce-for-net-developers-1030e070698a
我对 map-reduce 函数很陌生,我没有正确理解它们,我的任务是找到两个向量的点积。通用 Map Reduce 代码:
class MyMapReduce<K1, V1, K2, V2, R>
{
public delegate IEnumerable<KeyValuePair<K2, V2>> MapFunction(K1 key, V1 value);
public delegate IEnumerable<R> ReduceFunction(K2 key, IEnumerable<V2> values);
private MapFunction map;
private ReduceFunction reduce;
public MyMapReduce(MapFunction m, ReduceFunction r)
{
map = m;
reduce = r;
}
private IEnumerable<KeyValuePair<K2, V2>> Map(IEnumerable<KeyValuePair<K1,V1>> input)
{
var intermediateResult = from pair in input from mapped in map(pair.Key, pair.Value) select mapped;
return intermediateResult;
}
private IEnumerable<KeyValuePair<K2,R>> Reduce(IEnumerable<KeyValuePair<K2, V2>> intermediateValues)
{
var groups = from pair in intermediateValues group pair.Value by pair.Key into g select g;
var reduced = from g in groups let k2 = g.Key from reducedValue in reduce(k2, g) select new KeyValuePair<K2, R>(k2, reducedValue);
return reduced;
}
public IEnumerable<KeyValuePair<K2,R>> Execute(IEnumerable<KeyValuePair<K1, V1>> input)
{
return Reduce(Map(input));
}
}
我的程序.cs:
class Program
{
static void Main(string[] args)
{
List<KeyValuePair<string, int[]>> inputData = new List<KeyValuePair<string, int[]>>()
{
new KeyValuePair<string, int[]>("file1",new int[] { 1,2 }),
new KeyValuePair<string, int[]>("file2",new int[] { 3,4 }),
};
MyMapReduce<string, int[], string, int[], int> master = new MyMapReduce<string, int[], string, int[], int>(MapFromMem, Reduce);
var result = master.Execute(inputData).ToDictionary(k => k.Key, v => v.Value);
foreach (var item in result)
{
Console.WriteLine(item + ": " + item.Value);
}
}
public static IList<KeyValuePair<string, int[]>> MapFromMem()
{
//
}
public static IEnumerable<int> Reduce()
{
//
}
}
这里我需要在 MapFromMem 和 Reduce 中做什么来实现点积?
解决方案
推荐阅读
- ios - 是否可以在每次“照片”访问时收到通知?
- bioinformatics - 在 MAC OS Mojave 上下载 STAR
- python - 需要帮助用python解析一组json对象
- xcode - 未启用带有枚举源的 SwiftUI 选择器
- c - C - WinAPI:为什么 UTF-8 编码的字符在 Listview 中显示为中文?
- php - 关于路由飞行框架php的问题
- .net-core - 库是否应该明确针对 .NET Core 3?
- javascript - 自定义 Scrollspy 在我的网页上不起作用
- ruby-on-rails - 在 Rails 应用程序中使用 Puma
- macos - IntelijIDEA (Goland) 使用 /private/var/folders/