CN103577583A - 从大数据中高效计算用户数的方法 - Google Patents
从大数据中高效计算用户数的方法 Download PDFInfo
- Publication number
- CN103577583A CN103577583A CN201310553203.9A CN201310553203A CN103577583A CN 103577583 A CN103577583 A CN 103577583A CN 201310553203 A CN201310553203 A CN 201310553203A CN 103577583 A CN103577583 A CN 103577583A
- Authority
- CN
- China
- Prior art keywords
- data
- users
- user
- digital
- binary
- 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.)
- Pending
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/24—Querying
- G06F16/245—Query processing
- G06F16/2458—Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
-
- 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/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24553—Query execution of query operations
- G06F16/24558—Binary matching operations
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Computational Linguistics (AREA)
- Fuzzy Systems (AREA)
- Mathematical Physics (AREA)
- Probability & Statistics with Applications (AREA)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
一种在数据分析***中,从大数据环境中高效计算用户数的方法,包括位置标识、位置计算、位置存储和用户数计算共四个操作步骤。本发明采用二进制数表示存储对象,其中为1的位表示该位置有对应用户。最终计算符合匹配条件的用户数时,根据存储位置的二进制对象,计算其中二进制1的个数,就得到用户数数据。如果是多纬度组合匹配计算用户数时,则对位置对象进行位运算,就能够非常方便地获得所需要的用户数的数据。本发明在大数据中计算不同维度的用户数的方法,不仅计算速度快捷、高效,节约了计算资源,还能够保证计算结果准确、运算方式灵活、方便。因此,本发明具有很好的推广应用前景。
Description
技术领域
本发明涉及一种海量数据的计算技术,确切的说,涉及一种在数据分析***中从大数据中高效计算用户数的方法,属于计算机数值分析与统计的技术领域。
背景技术
在竞争与机遇并存的数字化信息时代,数据的分析与统计以决策支撑因素的身份出现在经济、管理、规划和投资等许多相关领域,对反应和影响企业发展的重要数据进行实时收集和分析,及时反馈重要信息,以便能够客观地了解业务发展情况,有依据的提出一些新的建议和设想,为企业经营部门和决策层提供重要的决策依据。其中,对经营性企业来说,用户数指标是反映业务发展的一项关键指标。
在用户业务量不断增长的情况下,大数据环境下如何快速计算出用户数,已经成为数据分析***必须解决的业务需求。在面对每天产生的上亿条用户使用日志进行大数据统计处理的计算中,用户数的计算是一个急需解决的难题和挑战。
目前,计算海量数据的现有技术通常采用的方法是:对一种维度(即某一个计算指标或参数,例如日期、不同业务等等)的统计需求就要对全部数据进行一次计算,具体方法是:最简单的分组、去重、求和的过程。用户数的计算过程是首先要在全部数据中排除重复用户的标识,然后计算排重后的用户数量。当增加统计维度时,还需要重新进行排重的操作与计算,其计算量非常巨大和耗时。例如:要对一天的日志分别计算网络类型和业务类型的用户数时,按照现有技术的方法,需要扫描两次日志文件:第一次计算网络类型的用户数,第二次计算业务类型的用户数。当需要两种类型的组合用户数时,还需要进行一次扫描计算,而每一次的扫描与统计都会占用大量的计算机资源。因此,如何解决从大数据中高效计算用户数的方法,就成为业内科技人员关注的新焦点。
发明内容
有鉴于此,本发明的目的是提供一种从大数据中高效计算用户数的方法,本发明方法能够在大数据中计算不同维度的用户数,不仅计算速度快捷、高效,节约了计算资源,还能够保证计算结果准确、运算方式灵活、方便;具有很好的实用价值。
为了达到上述目的,本发明提供了一种从大数据中高效计算用户数的方法,其特征在于:所述方法包括下列操作步骤:
(1)位置标识、即对用户数据进行预处理:为每个用户配置一个数字标识,作为其唯一的用户标识,且保证每个用户的数字标识是连续的,用于在二进制数据计算过程中表示该用户所在的二进制位的位置;再将用户标识和数字标识的对应关系加载于计算机内存,形成“用户名:数字标识”键值对的数据结构;
(2)位置计算、即该方法的核心操作:从大数据中扫描一部分用户数据,并逐条进行数据处理:先对其中每个用户数据找出用户标识,再从内存键值对中分别获取其对应的数字标识,并将该数字标识存储到链表List数据结构中;且在存储过程中执行去重处理,保证该链表中没有相同的数字标识;然后将该链表转换成内存中的位对象,使得该位对象的数字标识位置为1;
(3)位置存储:利用数据库中存储二进制大对象文件的容器BLOB(BINARY LARGE OBJECT),将步骤(2)计算获得的List数据结构中的二进制位置信息从计算机内存中存储到计算机磁盘上:把二进制数据中对应数字位置成1,其他位都置成0,并存储于磁盘,以供对其进行查询和增量计算;
所述增量计算是反复循环执行步骤(2)和(3),且在每次执行步骤(2)时,都要将已经生成的位对象和已有的BLOB位对象执行位或运算,其目的是要和已经得到的计算结果进行合并,达到用户去重的效果;
(4)用户数计算:计算符合匹配条件的用户数,即计算BLOB存储位置二进制位对象中的二进制1的个数,就能得到所需的用户数数据;如果是多个纬度组合匹配计算用户数时,则要对位对象进行相应的位运算,再计算位运算后的BLOB对象的1的个数,才能得到所需求的用户数数据。
本发明从大数据中高效计算用户数的方法的基础是借鉴计算机技术中的最基本的二进制数字概念和最基本的位运算操作,从而使得本发明方法非常高效、灵活。因为计算机底层可识别的是由0和1组成的二进制数据,且计算机中的任何数据计算都是通过位运算来实现的。例如:本发明方法中用到的位或运算:0|1=1。通俗地讲,两个位的数据中,只要有一个位的数值是1,则该两个位的或运算结果就是1。本发明方法既能够对要处理的大数据进行增量计算,也能够对多个纬度数据进行任意的组合计算,大大提高了数据分析***计算用户数数据的效率。其中的高效性表现在:只需要扫描一次数据,就可以获取不同维度的数据;还能够进行增量计算。例如,本发明只需扫描一次日志,就可同时获得网络和业务两种类型的用户数。其灵活性表现在:查询用户数时可以对不同维度进行任意组合的统计。例如,如果已经分别有了网络和业务两种类型的用户数时,使用本发明方法不用重新计算,只需利用已有的数据,就可以获得两种类型的组合用户数。总之,本发明具有很好的推广应用前景。
附图说明
图1是本发明从大数据中高效计算用户数的方法操作步骤时序图。
图2是本发明从大数据中高效计算用户数的方法的处理对象示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面结合附图对本发明作进一步的详细描述。
本发明中,维度表示一项统计指标,多个维度表示应同时符合多项统计指标。纬度的内容包括:日期、地区、网络类型、业务类型等等。
参见图1,介绍本发明从大数据中高效计算用户数的方法的具体操作步骤:
步骤1,位置标识:该步骤是计算用户数的准备阶段,即对用户数据进行预处理:为每个用户配置一个数字标识,作为其唯一的用户标识,且保证每个用户的数字标识是连续的,用于在二进制数据计算过程中表示该用户所在的二进制位的位置。例如:有三个用户标识:user1、user2、user3,分别给它们分配三个数字标识为:1、2、3。再将用户标识和数字标识的对应关系加载于计算机内存,形成“用户名:数字标识”键值对的数据结构。
该步骤1中,将用户标识和数字标识的对应关系加载到计算机内存中操作,是利用JAVA编程语言将该用户标识和数字标识的对应关系加载到键值对JAVA中的哈希映射对象HashMap中,形成“用户名:数字标识”的数据结构:用户标识为键,数字标识为值。
将用户标识和数字标识的对应关系加载到计算机内存中操作是通过数据库的序列完成的,形成的最终形式为“用户名:数字标识”。
步骤2,位置计算,该步骤是本发明方法的核心操作:从大数据中扫描一部分用户数据标识,并逐条进行数据处理:先对其中每个用户数据找出用户标识,再从内存键值对中分别获取其对应的数字标识,并将该数字标识存储到链表List数据结构中。且在存储过程中执行去重处理,使得重复的用户名都对应成一个标识,保证该链表中没有相同的数字标识。然后将该链表转换成内存中的位对象,使得该位对象的数字标识位置为1。
该步骤2包括下列具体操作内容:
(21)先扫描准备处理的用户数据,对每一条用户数据中的用户名从内存键值对中找到其对应的数据标识,并将重复的用户名都对应为同一个数据标识,即执行去重处理;这样组成一个没有重复序列的数字标识的列表。
(22)将该数字标识的列表存储到链表List数据结构中,此时该链表中没有相同的数字标识。
步骤3,位置存储:利用数据库中存储二进制大对象文件的容器BLOB(BINARY LARGE OBJECT),将步骤(2)计算获得的List数据结构中的二进制位置信息从计算机内存中存储到计算机磁盘上;也就是把二进制数据中对应数字位置成1,其他位都置成0,并存储于磁盘。这样就可以对其进行查询和增量计算了。
增量计算是反复循环执行步骤2和3,且在每次执行步骤2时,都要将已经生成的位对象和已有的BLOB位对象执行位或运算,其目的是要和已经得到的计算结果进行合并,达到用户去重的效果;
步骤4,用户数计算:计算符合匹配条件的用户数,即计算BLOB存储位置二进制位对象中的二进制1的个数,就能得到所需的用户数数据;如果是多个纬度组合匹配计算用户数时,则要对位对象进行相应的位运算,再计算位运算后的BLOB对象的1的个数,才能得到所需求的用户数数据。
步骤4中的位运算有下述两种:
位与是两个二进制位做与运算:该两个位必须都为1时,它们的与运算结果才为1,否则为0;
位或是两个二进制位做或运算:该两个位只要有一个为1,它们的或运算结果就为1,否则为0。
步骤(4)包括下列操作内容:
(41)将BLOB存储位置二进制位对象转换为JAVA中表示大整数数据结构的BigInteger对象;
(42)若是统计一个纬度的用户数,则调用BigInteger对象的bitCount()方法,统计其中二进制1的个数,就能够获得用户数的数据;或
(43)若是统计多个纬度组合匹配的用户数,则要对位对象进行相应的位运算,再计算位运算后的BigInteger对象的1的个数,才能得到所需求的用户数数据。
参见图2,介绍本发明方法中内存和磁盘中的数据存储格式:位置数据是用户名和数字标识的对应关系对象,本发明是采用键值对数据结构表示的。二进制对象是数据标识中去重后的用户标识转换成的数据,使用位对象来表示。BLOB对象是存储到磁盘的用户数对象,在此使用数据库中的大二进制对象来表示的。
本发明已经进行了多次实施试验,试验的结果是成功的,实现了发明目的。
Claims (7)
1.一种从大数据中高效计算用户数的方法,其特征在于:所述方法包括下列操作步骤:
(1)位置标识、即对用户数据进行预处理:为每个用户配置一个数字标识,作为其唯一的用户标识,且保证每个用户的数字标识是连续的,用于在二进制数据计算过程中表示该用户所在的二进制位的位置;再将用户标识和数字标识的对应关系加载于计算机内存,形成“用户名:数字标识”键值对的数据结构;
(2)位置计算、即该方法的核心操作:从大数据中扫描一部分用户数据,并逐条进行数据处理:先对其中每个用户数据找出用户标识,再从内存键值对中分别获取其对应的数字标识,并将该数字标识存储到链表List数据结构中;且在存储过程中执行去重处理,保证该链表中没有相同的数字标识;然后将该链表转换成内存中的位对象,使得该位对象的数字标识位置为1;
(3)位置存储:利用数据库中存储二进制大对象文件的容器BLOB(BINARY LARGE OBJECT),将步骤(2)计算获得的List数据结构中的二进制位置信息从计算机内存中存储到计算机磁盘上:把二进制数据中对应数字位置成1,其他位都置成0,并存储于磁盘,以供对其进行查询和增量计算;
所述增量计算是反复循环执行步骤(2)和(3),且在每次执行步骤(2)时,都要将已经生成的位对象和已有的BLOB位对象执行位或运算,其目的是要和已经得到的计算结果进行合并,达到用户去重的效果;
(4)用户数计算:计算符合匹配条件的用户数,即计算BLOB存储位置二进制位对象中的二进制1的个数,就能得到所需的用户数数据;如果是多个纬度组合匹配计算用户数时,则要对位对象进行相应的位运算,再计算位运算后的BLOB对象的1的个数,才能得到所需求的用户数数据。
2.根据权利要求1所述的方法,其特征在于:所述步骤(1)中,将用户标识和数字标识的对应关系加载到计算机内存中操作,是利用JAVA编程语言将该用户标识和数字标识的对应关系加载到键值对JAVA中的哈希映射对象HashMap中,形成“用户名:数字标识”的数据结构。
3.根据权利要求1所述的方法,其特征在于:所述步骤(1)中,将用户标识和数字标识的对应关系加载到计算机内存中操作是通过数据库的序列完成的,形成的最终形式为“用户名:数字标识”。
4.根据权利要求1所述的方法,其特征在于:所述步骤(2)包括下列操作内容:
(21)先扫描准备处理的用户数据,对每一条用户数据中的用户名从内存键值对中找到其对应的数据标识,并将重复的用户名都对应为同一个数据标识,即执行去重处理;这样组成一个没有重复序列的数字标识的列表;
(22)将该数字标识的列表存储到链表List数据结构中,此时该链表中没有相同的数字标识。
5.根据权利要求1所述的方法,其特征在于:所述步骤(4)中的位运算有下述两种:
位与是两个二进制位做与运算:该两个位必须都为1时,它们的与运算结果才为1,否则为0;
位或是两个二进制位做或运算:该两个位只要有一个为1,它们的或运算结果就为1,否则为0。
6.根据权利要求1所述的方法,其特征在于:所述维度表示一个统计指标,多个维度表示应同时符合多个统计指标;所述纬度的内容包括:日期、地区、网络类型、业务类型。
7.根据权利要求1所述的方法,其特征在于:所述步骤(4)包括下列操作内容:
(41)将BLOB存储位置二进制位对象转换为JAVA中表示大整数数据结构的BigInteger对象;
(42)若是统计一个纬度的用户数,则调用BigInteger对象的bitCount()方法,统计其中二进制1的个数,就能够获得用户数的数据;或
(43)若是统计多个纬度组合匹配的用户数,则要对位对象进行相应的位运算,再计算位运算后的BigInteger对象的1的个数,才能得到所需求的用户数的数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310553203.9A CN103577583A (zh) | 2013-11-08 | 2013-11-08 | 从大数据中高效计算用户数的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310553203.9A CN103577583A (zh) | 2013-11-08 | 2013-11-08 | 从大数据中高效计算用户数的方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN103577583A true CN103577583A (zh) | 2014-02-12 |
Family
ID=50049359
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310553203.9A Pending CN103577583A (zh) | 2013-11-08 | 2013-11-08 | 从大数据中高效计算用户数的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103577583A (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104486777A (zh) * | 2014-12-01 | 2015-04-01 | 中国联合网络通信集团有限公司 | 一种实现数据处理的方法及装置 |
CN106250564A (zh) * | 2016-08-29 | 2016-12-21 | 北京首信科技股份有限公司 | 一种对海量数据的维度用户的处理方法 |
CN106354813A (zh) * | 2016-08-29 | 2017-01-25 | 北京首信科技股份有限公司 | 一种对海量数据的维度用户的定位方法 |
CN106407290A (zh) * | 2016-08-29 | 2017-02-15 | 北京首信科技股份有限公司 | 一种从海量数据中高效计算多个维度用户数的方法 |
CN109937413A (zh) * | 2016-07-20 | 2019-06-25 | 深圳市东信时代信息技术有限公司 | 海量人群特征数据的处理方法及*** |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040214554A1 (en) * | 2002-06-25 | 2004-10-28 | Bellsouth Intellectual Property Corporation | Wireless paging directory assistant |
CN101394307A (zh) * | 2008-11-07 | 2009-03-25 | 阿里巴巴集团控股有限公司 | 一种统计在线用户数量的方法、装置及*** |
-
2013
- 2013-11-08 CN CN201310553203.9A patent/CN103577583A/zh active Pending
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040214554A1 (en) * | 2002-06-25 | 2004-10-28 | Bellsouth Intellectual Property Corporation | Wireless paging directory assistant |
CN101394307A (zh) * | 2008-11-07 | 2009-03-25 | 阿里巴巴集团控股有限公司 | 一种统计在线用户数量的方法、装置及*** |
Non-Patent Citations (1)
Title |
---|
佚名: "redis bitmaps-fast,easy,realtime metrics", 《HTTP://BLOG.GETSPOOL.COM/2011/11/29/FAST-EASY-REALTIME-METRICS-USING-REDIS-BITMAPS/》 * |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104486777A (zh) * | 2014-12-01 | 2015-04-01 | 中国联合网络通信集团有限公司 | 一种实现数据处理的方法及装置 |
CN104486777B (zh) * | 2014-12-01 | 2017-12-29 | 中国联合网络通信集团有限公司 | 一种实现数据处理的方法及装置 |
CN109937413A (zh) * | 2016-07-20 | 2019-06-25 | 深圳市东信时代信息技术有限公司 | 海量人群特征数据的处理方法及*** |
CN106250564A (zh) * | 2016-08-29 | 2016-12-21 | 北京首信科技股份有限公司 | 一种对海量数据的维度用户的处理方法 |
CN106354813A (zh) * | 2016-08-29 | 2017-01-25 | 北京首信科技股份有限公司 | 一种对海量数据的维度用户的定位方法 |
CN106407290A (zh) * | 2016-08-29 | 2017-02-15 | 北京首信科技股份有限公司 | 一种从海量数据中高效计算多个维度用户数的方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108364085B (zh) | 一种外卖配送时间预测方法和装置 | |
Vera-Baquero et al. | Real-time business activity monitoring and analysis of process performance on big-data domains | |
US8468120B2 (en) | Systems and methods for tracking and reporting provenance of data used in a massively distributed analytics cloud | |
CN109669934A (zh) | 一种切合电力客服业务的数据仓库***及其构建方法 | |
CN103577583A (zh) | 从大数据中高效计算用户数的方法 | |
CN109241159B (zh) | 一种数据立方体的分区查询方法、***及终端设备 | |
CN110750650A (zh) | 企业知识图谱的构建方法及装置 | |
CN104317928A (zh) | 一种基于分布式数据库的业务etl方法及*** | |
CN111400288A (zh) | 数据质量检查方法及*** | |
US11281698B2 (en) | Data configuration query method and device | |
CN106126601A (zh) | 一种社保大数据分布式预处理方法及*** | |
CN110347888B (zh) | 订单数据的处理方法、装置及存储介质 | |
CN108415964A (zh) | 数据表查询方法、装置、终端设备及存储介质 | |
CN110457371A (zh) | 数据管理方法、装置、存储介质及*** | |
CN105630934A (zh) | 一种数据统计方法及*** | |
CN111260194A (zh) | 一种基于区块链的物资精准供应方法及*** | |
CN107798120B (zh) | 一种数据转换方法及装置 | |
CN105786941B (zh) | 一种信息挖掘方法和装置 | |
CN114077492A (zh) | 云计算基础设施资源的预测模型训练、预测方法和*** | |
CN116737511A (zh) | 基于图的调度作业监控方法及装置 | |
CN111737490A (zh) | 基于银行渠道的知识图谱本体模型生成方法及装置 | |
CN116010380A (zh) | 一种基于可视化建模的数据仓库自动化管理方法 | |
CN115618825A (zh) | 财务报表合并方法、装置、计算机可读介质及终端设备 | |
CN114218216A (zh) | 资源管理方法、装置、设备及存储介质 | |
CN113094241A (zh) | 一种实时程序准确性的确定方法、装置、设备及存储介质 |
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 | ||
WD01 | Invention patent application deemed withdrawn after publication | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20140212 |