计算机硬件的扩容确实可以极大地提高程序的处理速度,但考虑到其技术、成本等方面的因素,它并非一条放之四海而皆准的途径。而随着互联网技术的发展,特别是机器学习、深度学习、大数据、人工智能、云计算、物联网及移动通信技术的发展,每时每刻,数以亿万计的用户产生着数量巨大的信息,海量数据时代已经来临。由于通过对海量数据的挖掘能有效地揭示用户的行为模式,加深对用户需求的理解,提取用户的集体智慧,从而为研发人员决策提供依据,提升产品用户体验,进而占领市场,所以当前各大互联网公司研究都将重点放在了海量数据分析上,但是,只寄希望于硬件扩容是很难满足海量数据分析需要的,如何利用现有条件进行海量信息处理,已经成为各大互联网公司亟待解决的问题。所以,海量信息处理正日益成为当前程序员笔试面试中一个新的亮点。
不同于常规量级数据中提取信息,在海量信息中提取有用数据,会存在以下几个方面的问题:首先,数据量过大,数据中什么情况都可能存在,如果信息数量只有20条,人工可以逐条进行查找、比对,可是当数据规模扩展到上百条、数千条、数亿条,甚至更多时,仅仅通过人工已经无法解决存在的问题,必须通过工具或者程序进行处理。其次,对海量数据信息处理,还需要有良好的软硬件配置,合理使用工具,合理分配系统资源,通常情况下,如果需要处理的数据量非常大,超过了TB级,小型机、大型工作站是要考虑的,普通的计算机如果有好的方法也可以考虑,例如通过联机做成工作集群。最后,对海量数据信息处理时,要求很高的处理方法和技巧,如何进行数据挖掘算法的设计以及如何进行数据的存储访问等都是研究的难点。(www.xing528.com)
针对海量数据的处理,可以使用的方法非常多,常见的方法有Hash法、Bit-map(位图)法、Bloomfilter法、数据库优化法、倒排索引法、外排序法、Trie树、堆、双层桶法以及MapReduce法等。其中,Hash法、Bit-map(位图)法、Trie树、堆等方法的考察频率最高、使用范围最为广泛,是读者需要重点掌握的方法。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。