使用MapReduce为字符串分配唯一ID

使用MapReduce为字符串分配唯一ID,mapreduce,uniqueidentifier,apache-zookeeper,Mapreduce,Uniqueidentifier,Apache Zookeeper,我想运行一个MapReduce作业,其中我想扫描给定文件中的多个列,并为每个列的每个不同值分配一个唯一的ID(索引号)。主要的挑战是为不同节点或Reducer的不同实例上遇到的相同值共享相同的ID 目前,我正在使用zookeeper共享唯一ID,但这会影响性能。我甚至将信息保存在本地缓存的reducer级别,以避免为相同的值多次访问zookeeper。我想探索是否有其他更好的机制可以做到这一点 我可以为你的问题提出两种可能的解决方案 根据您的值创建唯一ID。这可能是一个低冲突率的哈希函数 使用比

我想运行一个MapReduce作业,其中我想扫描给定文件中的多个列,并为每个列的每个不同值分配一个唯一的ID(索引号)。主要的挑战是为不同节点或Reducer的不同实例上遇到的相同值共享相同的ID


目前,我正在使用zookeeper共享唯一ID,但这会影响性能。我甚至将信息保存在本地缓存的reducer级别,以避免为相同的值多次访问zookeeper。我想探索是否有其他更好的机制可以做到这一点

我可以为你的问题提出两种可能的解决方案

  • 根据您的值创建唯一ID。这可能是一个低冲突率的哈希函数
  • 使用比ZooKeeper更快的存储。您可以尝试像Redis这样的简单键值存储来存储值到id的映射 您可以使用md5(值)作为id吗?