CN106484818B - 一种基于Hadoop和HBase的层次聚类方法 - Google Patents
一种基于Hadoop和HBase的层次聚类方法 Download PDFInfo
- Publication number
- CN106484818B CN106484818B CN201610851970.1A CN201610851970A CN106484818B CN 106484818 B CN106484818 B CN 106484818B CN 201610851970 A CN201610851970 A CN 201610851970A CN 106484818 B CN106484818 B CN 106484818B
- Authority
- CN
- China
- Prior art keywords
- cluster
- hbase
- distance
- algorithm
- hadoop
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/25—Integrating or interfacing systems involving database management systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2282—Tablespace storage structures; Management thereof
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种基于Hadoop和HBase的层次聚类方法。该方法通过Hadoop来计算距离矩阵,并将结果转化为HFile文件用Bulk Load方法导入到HBase中,HBase用来存储距离矩阵,主要分为两张表,其中一个表按cluster ID对进行排序,另一个表按cluster间的距离进行排序,可以方便实现每次迭代取出距离最近的两个cluster进行合并。最后再实现一个多线程的算法并结合cache技术统一处理HBase中的距离矩阵,实现层次聚类算法并预留多个可调节参数,该算法同时支持single‑linkage、complete‑linkage和average‑linkage三种聚类法。本发明提出的方案利用了Hadoop的并行计算能力和HBase的海量数据存储能力,从而提高层次聚类算法的大数据处理能力和扩展性。
Description
技术领域
本发明涉及层次聚类算法、Hadoop和HBase相关技术领域,尤其涉及一种基于Hadoop与HBase的层次聚类方法的设计与实现。
背景技术
层次聚类算法作为一个简单并被广泛接受的聚类算法,已经在很多方面得到了应用,例如信息检索,生物信息学。层次聚类算法的优点是它将聚类结果以一个比较详细的方法表示出来。它将集群之间的聚类关系组织成一个树状图,用户可以清楚地知道各个集群是怎么被聚类到一起的,其他的很多聚类算法并没有给出这样的结果。而且,与k-means等其他聚类算法相比,层次聚类算法不用要求用户事先指定聚类的数量。虽然层次聚类算法具有很多优点并被广泛地接受和使用,但随着数据量的快速增长,单机的层次聚类算法的性能已经无法满足要需求,层次聚类算法的高复杂度和固有的数据依赖性使得它很难在大数据集上有效的执行。但往往只有从越充分的数据中才能提取出越有用的信息,数据集的大小成为了机器学习算法中一个很重要的因素。这促使我们迫切需要一个可以运行在大数据集上的层次聚类算法。
Hadoop是一个可以对海量数据进行分布式处理的软件框架,它提供了一种可靠、高效、可伸缩的方式来进行数据处理。而HBase是Hadoop生态圈中的另一重要成员,是一个非关系型的分布式数据库。它提供了一个高可靠性、高性能、可伸缩、面向列的存储***,适合于非结构化数据的存储。作为非常重要的大数据处理技术,Hadoop与HBase都在许多大数据领域得到了广泛的应用。
层次聚类算法依赖于空间复杂度为O(n2)的距离矩阵,导致其无法在单机上很好地处理大数据集,同时也无法比较好地扩展。利用Hadoop的并行计算能力和HBase高性能的海量数据存储能力,可以为层次聚类算法提供有效的解决方案。但目前在Hadoop和HBase平台上并没有一种能同时支持single-linkage、complete-linkage和average-linkage多种聚类法的层次聚类算法。
发明内容
本发明目的克服现有技术存在的上述不足,提供一种基于Hadoop和HBase的层次聚类方法,并且同时支持single-linkage、complete-linkage和average-linkage三种聚类法,具体技术方案如下。
一种基于Hadoop和HBase的层次聚类方法,其用Hadoop来实现一个距离矩阵并行化计算,并用HBase来存储距离矩阵,在表的设计中采用RowKey设计充分利用HBase的排序功能,再结合多线程技术和cache技术来处理HBase中的距离矩阵,从而实现能应用于大数据的、具有扩展性的层次聚类方法。
进一步地,距离矩阵的并行化计算具体包括:采用Hadoop来实现,主要分成两个MapReduce算法,第一个MapReduce算法计算距离并将结果存储到中间文件,第二个MapReduce算法将中间文件结果转换成HFile格式;最后用Bulk Load方法将结果导入到HBase中。
进一步地,HBase中主要有两张表,其中一张表的RowKey为Cluster ID对,并将Cluster ID补全前导0保持一样的长度,从而实现表中的记录能按Cluster ID进行排序,value为Cluster间的距离;通过这张表快速地获得与指定Cluster ID相关的距离;另一张表的RowKey为Cluster间的距离,并在距离的前面补全前导0,从而实现表中的记录能按距离从小到大进行排序,value为Cluster ID对;通过获取这张表的首行,能快速地获取距离最近的两个Cluster;
在所述聚类方法初始阶段,提前按照Cluster ID和距离对两张表进行预分区,将分区分摊到HBase集群的各个节点上。
进一步地,在聚类的过程中,将Cluster的合并路径和Cluster所包含的所有原子Cluster的数量记录在内存中;采用single-linkage或complete-linkage算法时,计算新合成的Cluster与已有Cluster之间的距离只需从HBase或者cache中取回合成新Cluster的两个Cluster与其余Cluster间的距离来进行新的计算;采用average-linkage算法时,除了需要合成新Cluster的两个Cluster与其他Cluster间的距离,还需要从内存中获得每个Cluster所包含的所有原子Cluster数量来进行平均值的计算。
进一步地,结合cache的多线程算法,从HBase获得距离最近的两个Cluster并将它们合并成一个新的Cluster,并并行地从cache或者HBase中获取距离最近的两个Cluster与其他Cluster间的距离信息,在此期间启动删除线程删除HBase中失效数据同时启动计算线程提前计算已经获得距离信息的Cluster与新Cluster间的距离同时并行地将新的距离信息写回cache或者HBase;这里采用cache技术来减少算法的网络IO。
进一步地,用Hadoop来计算算法距离矩阵,用HBase来存储距离矩阵,再结合多线程技术和cache技术设计和实现了算法,从而提高了层次聚类算法的可扩展性和处理大数据的能力。
与现有技术相比,本发明具有如下优点和技术效果:
本发明基于Hadoop实现了一个距离矩阵并行化计算算法,并将结果转化为HFile文件用Bulk Load方法导入到HBase中。HBase用来存储距离矩阵,在表的设计中采用独特的RowKey设计充分利用HBase的排序功能,方便算法快速获得距离信息和取得距离最近的两个Cluster。同时结合多线程和cache技术设计和实现了算法并预留了多个可调节参数。通过Hadoop的并行计算能力和HBase的海量数据存储能力,提高了层次聚类算法的扩展性和大数据处理能力。
附图说明
图1为实例中距离矩阵计算算法架构图。
图2为实例中表设计示意图。
图3为实例中层次聚类算法的层次树示意图。
图4为线程执行顺序示意图。
图5为实例中算法参数说明图。
具体实施方式
为了使本发明的技术方案及优点更加清楚明白,下面结合附图,进行进一步的详细说明,但本发明的实施和保护不限于此。需指出的是,以下若有未特别详细说明之符号或过程,均是本领域技术人员可参照现有技术理解或实现的。
1.距离矩阵的并行化计算算法
距离矩阵的并行化计算算法以提高距离矩阵的计算速度和快速导入到HBase为目标。层次聚类算法在聚类的过程中,需要依赖一个空间复杂度为O(n2)的距离矩阵,在本方法中,为距离矩阵的计算设计和实现了一个基于Hadoop的并行化计算算法,如图1所示。该算法首先将存有待聚类数据的文件作为全局缓存文件分发给各个task,再将存有ClusterID的文件进行分块,每个task处理一块。每个task迭代取得各个ID,并计算其与ID值比它大的所有其他Cluster之间的距离,如ID=2的Cluster,则计算其与ID=3,4,5…的Cluster之间的距离,并按(distance ID1,ID2timestamp)的格式将结果输出到中间文件。空间复杂度为O(n2)的距离矩阵,如果按照在reduce中将数据一条一条地***HBase中的方法则速度会比较慢,在该实现方法中采用了Bulk Load方法来将数据快速导入到HBase中。Bulk Load方法是基于HBase的数据是按特定格式存储在HDFS上这一原理的。所以在该实现方法中接着实现另外的MapReduce程序将中间结果转化为HFile格式的文件,再利用Bulk Load方法将HFile导入到HBase中。利用Hadoop和Bulk Load方法实现了距离矩阵的并行计算和快速导入到HBase。
2.表的设计
HBase上表的设计对算法的性能有很大的影响。不合理的设计将导致算法性能大大降低从而影响算法的可用性。在该实现中根据层次聚类算法的特征对表进行了独特的设计,如图2所示。HBase中主要有两张表:distanceMatrix表和sortedDistance表。distanceMatrix表存储着按Cluster ID对从小到大进行排序距离矩阵数据,其RowKey为Cluster ID对,并将Cluster ID补全前导0保持RowKey长度一致,实现表中的记录能按Cluster ID进行排序,value为Cluster间的距离。通过这张表可以快速地获得与指定Cluster ID相关的距离。sortedDistance表存储着按距离从小到大排序的距离矩阵数据,其RowKey为Cluster间的距离,并在距离的前面补全前导0保持所有RowKey长度一致,实现表中的记录能按距离从小到大进行排序,value为Cluster ID对。通过获取这张表的首行,可以快速地获取距离最近的两个Cluster。同时,该实现预留了参数来指定两个表的初始region数量,在算法初始阶段,提前按照Cluster ID和距离对两张表进行预分区,将分区后的各个region分摊到HBase集群的各个节点上,提高HBase的并发处理能力。
3.简化计算
在计算两个cluster之间的距离的时候,如果两个cluster是由其他cluster合成而来的,则我们需要用到两个cluster之间所有点对的距离,如singleton cluster A和singleton cluster B合成了cluster D,则计算singleton cluster C与cluster D之间的距离的时候需要用到cluster C与singleton cluster A和cluster C与singletoncluster B之间的距离。但其实并不需要每次都比较所有singleton cluster的距离,而只需要比较两个cluster下各个sub cluster之间的距离即可。图3是凝聚式层次聚类算法的一棵层次树。我们定义dis(A,B)为cluster A与cluster B之间的距离,min为求最小值,max为求最大值,avg为求平均值,count(A)为cluster A包含的所有点的个数。则采用single-linkage方法计算cluster 7与cluster 9之间的距离dis(7,9)时有:
dis(7,9)=min(dis(1,5),dis(1,6),dis(2,5),dis(2,6),dis(3,5),dis(3,6))
=min(min(dis(1,5),dis(1,6)),min(dis(2,5),dis(2,6)),min(dis(3,5),dis(3,6)))
=min(dis(1,7),dis(2,7),dis(3,7))
=min(dis(1,7),min(dis(2,7),dis(3,7)))
=min(dis(1,7),dis(8,7))
可见,计算cluster 7与cluster 9之间的距离dis(7,9)时只需要dis(1,7)、dis(8,7),而不需要cluster1-4与cluster4-5的所有距离。complete-linkage方法与single-linkage方法类似,只需要把以上公式的min换成max。而采用average-linkage方法计算cluster 7与cluster 9之间的距离dis(7,9)时有:
可见,采用average-linkage时不仅需要dis(1,7)、dis(8,7),还需要用到cluster7and cluster9各自所包含的点的个数,以便可以计算平均值。
4.结合cache的多线程算法的设计与实现
除了距离矩阵的高效存取方法之外,还需要一个并行化的算法来完成聚类过程。在算法中,我们结合了多线程技术和cache技术来完成算法的设计与实现。按层次聚类算法原理,首先需要获取距离最近的两个cluster,并将它们合并成一个新的cluster。正如前文所介绍的,sortedDistance表中存储着cluster对及它们之间的距离,最主要的是它们是按距离从小到大排序,所以我们只需要获取sortedDistance表的第一条记录。我们利用HBase的scan API从sortedDistance表中获取第一条数据,为了避免获取多余的数据我们将scan的cache设置为1。
为了方便说明,假设初始数据集有10个点,开始的时候每个点单独作为一个cluster,则初始时有10个cluster:C1到C10。假如第一次迭代的时候距离最近的两个cluster为C1和C2,并且我们将他们合并成一个新的cluster C11。根据上一小节所说明的,我们需要C1、C2与cluster C3到C10之间的距离来计算C11与C3...C10,并将新距离写到cache或者HBase中。在没命中cache的情况下,我们需要从HBase中读取距离,因为这是一个IO密集的操作,所以我们采用了多线程的方式,并发地使用Scan API从distanceMatric表中读取相关的距离,同时我们通过scan.setCaching调整Scan每次读回的行数。在从distanceMatric表中读取距离的过程,我们也并行地启动多个线程从sortedDistance表中删除与已经合并的两个cluster相关的距离,显然,get和put操作都是IO密集型的操作,所以我们可以提前对已经获取的数据进行计算,而不必等到所有数据获取完。所以在我们启动scan线程去HBase中读取数据的同时我们也启动计算线程进行计算而不是等待scan线程结束。并且我们也并行地启动多线程将新距离写回cache或HBase,这样在获取完所有的数据的时候也已经基本完成了计算任务。
各个并行线程的执行顺序如图4所示。如我们所知,我们需要一些同步技术来控制线程。在我们的算法中,我们采用了BlockingQueue和Barrier技术。BlockingQueue通过控制两个线程交替地向BlockingQueue中放入、取出元素来控制线程的通信。而Barrier技术在并行迭代算法中非常有用,这种算法将一个问题拆分成多个子问题,并并行地执行,并且在到达栅栏位置的时候会等待,直到所有线程都到达了栅栏位置。
5.可调参数说明
Hadoop和HBase在使用的过程中,有许多的参数需要根据实际地应用需求进行调整才能达到一个比较好性能。在我们的算法的设计过程中,除了Hadoop、HBase本身支持的参数,我们还预留了许多算法自定义的参数方便在使用算法的过程中根据实际情况进行调整,主要的参数如图5所示。接下来将介绍主要的自定义参数。
在层次聚类算法计算过程中产生的距离矩阵比较大,我们将其放在HBase的表中并在客户端增加了一层cache。为了充分利用HBase集群多个机器的性能,比较好的做法是将负载分摊到各个机器中去,所以在建表的时候我们对表进行预分区,将一个表拆分到多个region,然后每个服务器各负责一部分region。我们提供了regionCountDM和regionCountSD参数用于分别指定将distanceMatric表和sortedDistance表分为多少个region。同时,我们在客户端维护了一层cache,以提高数据查找的性能,并提供了cacheSize参数方便根据实际情况调整cache缓存的记录条数。与层次聚类算法的single-linkage,complete-linkage和average-linkage方法对应,我们提供了similarity_method参数用于指定采用哪一种方法。同时还提供了distance_method用于指定使用哪一种距离度量方法来计算两个点之间的距离,测试的时候我们只实现了Euclidean方法。在算法的计算过程我们使用了多线程技术,所以也提供了参数可以对线程数进行调整,我们可以通过调整putThreadNum参数来调整put线程数,同时可以调整pagesNum参数来控制从HBase读取数据的线程数,我们将需要从HBase中读取的数据进行了分页,每一个线程读取一页,pagesNum参数控制着页数,如pagesNum=10,我们需要读取ID为0到10000的数据,则分为10个线程,分别读取0到1000,1001到2000以此类推。最后,为了控制层次聚类算法的结束条件,可以通过设置maxClusterNum参数来指定将数据聚成多少个类,也可以通过设置minDistance参数来指定当两个cluster之间的最小距离小于minDistance指定的值时结束聚类。
Claims (1)
1.一种基于Hadoop和HBase的层次聚类方法,其特征在于用Hadoop来实现一个距离矩阵并行化计算,并用HBase来存储距离矩阵,在表的设计中采用RowKey设计充分利用HBase的排序功能,再结合多线程技术和cache技术来处理HBase中的距离矩阵,从而实现能应用于大数据的、具有扩展性的层次聚类方法;距离矩阵的并行化计算具体包括:采用Hadoop来实现,分成两个MapReduce算法,第一个MapReduce算法计算距离并将结果存储到中间文件,第二个MapReduce算法将中间文件结果转换成HFile格式;最后用Bulk Load方法将结果导入到HBase中;HBase中有两张表,其中一张表的RowKey为Cluster ID对,并将Cluster ID补全前导0保持一样的长度,从而实现表中的记录能按Cluster ID进行排序,value为Cluster间的距离;通过这张表快速地获得与指定Cluster ID相关的距离;另一张表的RowKey为Cluster间的距离,并在距离的前面补全前导0,从而实现表中的记录能按距离从小到大进行排序,value为Cluster ID对;通过获取这张表的首行,能快速地获取距离最近的两个Cluster;
在所述聚类方法初始阶段,提前按照Cluster ID和距离对两张表进行预分区,将分区分摊到HBase集群的各个节点上;在聚类的过程中,将Cluster的合并路径和Cluster所包含的所有原子Cluster的数量记录在内存中;采用single-linkage或complete-linkage算法时,计算新合成的Cluster与已有Cluster之间的距离只需从HBase或者cache中取回合成新Cluster的两个Cluster与其余Cluster间的距离来进行新的计算;采用average-linkage算法时,除了需要合成新Cluster的两个Cluster与其他Cluster间的距离,还需要从内存中获得每个Cluster所包含的所有原子Cluster数量来进行平均值的计算;结合cache的多线程算法,从HBase获得距离最近的两个Cluster并将它们合并成一个新的Cluster,并并行地从cache或者HBase中获取距离最近的两个Cluster与其他Cluster间的距离信息,在此期间启动删除线程删除HBase中失效数据同时启动计算线程提前计算已经获得距离信息的Cluster与新Cluster间的距离同时并行地将新的距离信息写回cache或者HBase。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610851970.1A CN106484818B (zh) | 2016-09-26 | 2016-09-26 | 一种基于Hadoop和HBase的层次聚类方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610851970.1A CN106484818B (zh) | 2016-09-26 | 2016-09-26 | 一种基于Hadoop和HBase的层次聚类方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106484818A CN106484818A (zh) | 2017-03-08 |
CN106484818B true CN106484818B (zh) | 2023-04-28 |
Family
ID=58268853
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610851970.1A Active CN106484818B (zh) | 2016-09-26 | 2016-09-26 | 一种基于Hadoop和HBase的层次聚类方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106484818B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106932184A (zh) * | 2017-03-15 | 2017-07-07 | 国网四川省电力公司广安供电公司 | 一种基于改进层次聚类的变压器故障诊断方法 |
CN112668622A (zh) * | 2020-12-22 | 2021-04-16 | 中国矿业大学(北京) | 煤地质成分数据的分析方法以及分析计算设备 |
CN113268333B (zh) * | 2021-06-21 | 2024-03-19 | 成都锋卫科技有限公司 | 一种基于多核计算的层次聚类算法优化方法 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104965823A (zh) * | 2015-07-30 | 2015-10-07 | 成都鼎智汇科技有限公司 | 一种基于大数据的观点抽取方法 |
-
2016
- 2016-09-26 CN CN201610851970.1A patent/CN106484818B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104965823A (zh) * | 2015-07-30 | 2015-10-07 | 成都鼎智汇科技有限公司 | 一种基于大数据的观点抽取方法 |
Non-Patent Citations (1)
Title |
---|
徐小龙 ; 李永萍 ; .一种基于MapReduce的知识聚类与统计机制.电子与信息学报.2016,(01),全文. * |
Also Published As
Publication number | Publication date |
---|---|
CN106484818A (zh) | 2017-03-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108563923B (zh) | 一种基因变异数据分布式存储方法及*** | |
JP6697392B2 (ja) | 半構造データスキーマのトランスペアレントディスカバリ | |
CN107710200B (zh) | 用于并行化smp数据库中的基于散列的运算符的***和方法 | |
US7558802B2 (en) | Information retrieving system | |
Kim et al. | Parallel in situ indexing for data-intensive computing | |
Peng et al. | Paris+: Data series indexing on multi-core architectures | |
CN103914483B (zh) | 文件存储方法、装置及文件读取方法、装置 | |
CN105956666B (zh) | 一种机器学习方法及*** | |
CN102521406A (zh) | 海量结构化数据复杂查询任务的分布式查询方法和*** | |
WO2016107497A1 (en) | Method and apparatus for scalable sorting of data set | |
CN106484818B (zh) | 一种基于Hadoop和HBase的层次聚类方法 | |
CN103514210A (zh) | 小文件处理方法及装置 | |
EP3362808B1 (en) | Cache optimization for data preparation | |
JP4758429B2 (ja) | 共有メモリ型マルチプロセッサシステム及びその情報処理方法 | |
CN110795469B (zh) | 基于Spark的高维序列数据相似性查询方法及*** | |
Sun et al. | GraphMP: An efficient semi-external-memory big graph processing system on a single machine | |
Shohdy et al. | Load balancing and accelerating parallel spatial join operations using bitmap indexing | |
Cruz et al. | GPU acceleration of set similarity joins | |
US20180203896A1 (en) | Method and apparatus for processing query | |
Ding et al. | Commapreduce: An improvement of mapreduce with lightweight communication mechanisms | |
JP5655764B2 (ja) | サンプリング装置、サンプリングプログラム、およびその方法 | |
Wu et al. | Hm: A column-oriented mapreduce system on hybrid storage | |
JP2007048318A (ja) | リレーショナルデータベースの処理方法およびリレーショナルデータベース処理装置 | |
Ge et al. | Cinhba: A secondary index with hotscore caching policy on key-value data store | |
KR101642072B1 (ko) | 하이브리드스토리지장치 및 방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |