如何通过MapReduce实现LSH?
假设我们希望通过MapReduce实现本地敏感哈希LSH。具体地说,假设签名矩阵的块由列组成,元素是键值对,其中键是列号,值是签名本身,即值的向量 演示如何将所有频带的桶作为单个频带的输出 MapReduce进程。提示:记住Map函数可以生成 来自单个元素的多个键值对 b显示另一个MapReduce进程如何将a的输出转换为 需要比较的对的列表。具体来说,对于每一列i, 应该有一个列j>i的列表,我需要使用这些列 比较。a Map:将元素及其签名作为输入,生成bucket_id、元素的键值对 减少:为所有频带生成桶作为输出,即。 bucket_id,列表元素 b 映射:输出一个作为输入,产生相同的组合列表 bucket,即bucket\u id,列表元素->bucket\u id, combinationlistelements,哪种组合是任意两个元素 从同一桶中选择。 Reduce:输出所需的项目对 具体地说,对于每一列i,应该有一个 需要与之进行比较的列j>i。 a Map:将元素及其签名作为输入,生成bucket_id、元素的键值对 减少:为所有频带生成桶作为输出,即。 bucket_id,列表元素 b 映射:输出一个作为输入,产生相同的组合列表 bucket,即bucket\u id,列表元素->bucket\u id, combinationlistelements,哪种组合是任意两个元素 从同一桶中选择。 Reduce:输出所需的项目对 具体地说,对于每一列i,应该有一个 需要与之进行比较的列j>i。如何通过MapReduce实现LSH?,mapreduce,Mapreduce,假设我们希望通过MapReduce实现本地敏感哈希LSH。具体地说,假设签名矩阵的块由列组成,元素是键值对,其中键是列号,值是签名本身,即值的向量 演示如何将所有频带的桶作为单个频带的输出 MapReduce进程。提示:记住Map函数可以生成 来自单个元素的多个键值对 b显示另一个MapReduce进程如何将a的输出转换为 需要比较的对的列表。具体来说,对于每一列i, 应该有一个列j>i的列表,我需要使用这些列 比较。a Map:将元素及其签名作为输入,生成bucket_id、元素的键值对 减少
map(key, value: element):
split item to bands
for band in bands:
for sig in band:
key = hash(sig) // key = bucket id
collect(key, value)
reduce(key, values):
collect(key, values)
map(key, value):
for itemA, itemB in combinations(value)
key = (itemA.id, itemB.id)
collect(key, [itemA, itemB])
reduce(key, values):
collect(key, values)