如何通过MapReduce实现LSH?

如何通过MapReduce实现LSH?,mapreduce,Mapreduce,假设我们希望通过MapReduce实现本地敏感哈希LSH。具体地说,假设签名矩阵的块由列组成,元素是键值对,其中键是列号,值是签名本身,即值的向量 演示如何将所有频带的桶作为单个频带的输出 MapReduce进程。提示:记住Map函数可以生成 来自单个元素的多个键值对 b显示另一个MapReduce进程如何将a的输出转换为 需要比较的对的列表。具体来说,对于每一列i, 应该有一个列j>i的列表,我需要使用这些列 比较。a Map:将元素及其签名作为输入,生成bucket_id、元素的键值对 减少

假设我们希望通过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。
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)