本发明涉及大数据处理的技术领域,尤其涉及一种在Map Reduce分布式运算中UUID的计算方法。
背景技术:
大数据领域的公司在加工处理数据时,会为公司内每条有价值的数据产生ID,而且要求ID是唯一的,即UUID(UUID是通用唯一识别码Universally Unique Identifier的简称)。
现有的技术方案如下:
1、使用java的UUID的api生成UUID。
核心代码如下:UUID.randomUUID().toString();
可以看出方法简单,代码量少。但是问题是在海量数据,数以亿计的情况下,这种生成UUID的方式并不能保证UUID完全没有重复的。数据质量上存在瑕疵。
2、采用13位时间戳加上随机数的方式产生UUID。
13位时间戳可以将时间精确到毫秒。在一毫秒内要同时生成多个ID,为了避免重复,使用随机数。
存在问题:
单台服务器上,根据性能条件,一毫秒内有可能会生成多个ID,多个ID间也存在重复的可能性。
在Map reduce运算过程中,海量数据的场景下,同一个作业(Job)会有非常多的任务(Task)。任务分布在成百上千台服务器上面,在并行运行。整体上看,同一毫秒内会处理非常多的数据,生成非常多的ID,这势必会大大增加ID重复的可能性。
技术实现要素:
为克服现有技术的缺陷,本发明要解决的技术问题是提供了一种在Map Reduce分布式运算中UUID的计算方法,其能够在大数据的场景下为每条数据生成唯一的ID,而且ID长度可控。
本发明的技术方案是:这种在Map Reduce分布式运算中UUID的计算方法,
UUID的组成为:13位时间戳+M位count+N位taskID+P位随机数,
其中:N、M、P为自然数;
M位count表示10M个数,N位taskID表示map和reduce生成10N个任务,P位随机数表示进一步减少ID重复的可能性和调整ID的长度的数是10P个。
本发明通过全新的UUID的组成为:13位时间戳+M位count+N位taskID+P位随机数,能够在大数据的场景下为每条数据生成唯一的ID;由于加入了进一步减少ID重复的可能性和调整ID的长度的P位随机数,使得ID长度可控。
附图说明
图1所示为根据本发明的在Map Reduce分布式运算中UUID的计算方法的示意图。
具体实施方式
如图1所示,这种在Map Reduce分布式运算中UUID的计算方法,
UUID的组成为:13位时间戳+M位count+N位taskID+P位随机数,
其中:N、M、P为自然数;
M位count表示10M个数,N位taskID表示map和reduce生成10N个任务,P位随机数表示进一步减少ID重复的可能性和调整ID的长度的数是10P个。
本发明通过全新的UUID的组成为:13位时间戳+M位count+N位taskID+P位随机数,能够在大数据的场景下为每条数据生成唯一的ID;由于加入了进一步减少ID重复的可能性和调整ID的长度的P位随机数,使得ID长度可控。
其中,13位时间戳可以将时间精确到毫秒,将ID重复问题缩减到毫秒。
另外,M=6。M取值6,count是6位,count的取值范围是0~999999。则一毫秒内产生一百万个ID不会重复。扩大M的值,可以保证更大范围内的ID不重复。按照服务器的性能来看,一毫秒内处理的数据是有限的。将M设定合理的值,可以保证一毫秒内产生的ID没有重复的。
另外,N=5。N位taskID,hadoop在运算过程中,可分为map、reduce两种任务,map和reduce会根据数据量大小,生成一个或多个map、reduce任务。这些任务有唯一的作业ID,即taskID。将taskID加入UUID的组成中,保证并行的作业间产生的ID不会重复。比如:N取5位,取值范围0~99999,可以支持一个作业中运行10万个任务的情况,适应大部分场景。如有更大数据要处理,生产更多的任务,可以提高N的取值。
另外,该方法部署到Map Reduce程序中,提交到hadoop集群运行。或者,部署自定义hive的UDF函数,再使用hive,通过HQL生产加工数据时调用UDF函数,生成本方法中的UUID。其中,Hive是建立在Hadoop上的数据仓库基础构架。它提供了一系列的工具,可以用来进行数据提取转化加载(ETL),这是一种可以存储、查询和分析存储在Hadoop中的大规模数据的机制。Hive定义了简单的类SQL查询语言,称为HQL。HQL可以使用函数来增强处理数据的能力,Hive提供了一些函数,若是扩展已有的函数或是开发新的函数,这部分函数叫做用户自定义函数,即UDF。
更进一步地,生成的UUID数据存储在hadoop的HDFS分布式文件系统里。
本发明的有益效果如下:
1.大数据的场景下,为每条数据生成UUID,ID没有重复。
2.ID长度可控。
以上所述,仅是本发明的较佳实施例,并非对本发明作任何形式上的限制,凡是依据本发明的技术实质对以上实施例所作的任何简单修改、等同变化与修饰,均仍属本发明技术方案的保护范围。