前两天小编和同事聊天,有一茬没一茬的聊到,“咦,你说咱们用来做大数据处理的这些数据,都是从哪来的呢?”,小编一时语塞,“你管它呢,总之它就有”。但这个问题它还真是一个值得说说的问题。
在现在的数据技术时代中,数据有着不可替代的地位,抛开数据谈大数据服务就是瞎扯,没有数据作支撑的大数据平台就是一个空壳。数据是一切数据分析、数据挖掘、大数据处理、ai算法的核心。
在目前的来看,绝大多数公司或者组织做大数据处理时,他们的数据来源于:设备收集、数据库、日志、爬虫等等。当然如果是学术或者个人做大数据处理的研究的话,数据还经常可能来源于:开源数据集、造数据(假数据/模拟数据)等等。
这很好理解,因为在公司中,常常数据都是需要服务于真实业务,所以数据也就来自于真实业务,而个人或者学术上可以使用一些特定的开源数据集来做相应研究,下面大家来介绍一下公司中经常获取数据的这几种方法:
1.设备收集
设备收集顾名思义就是使用一些设备来进行收集数据,比如在工业界电力行业常用的Scada数据就是通过常用的一些终端电子设备,直接放在汇流箱、逆变器等设备上,实时将电流电压数据记录并保存下来,这样得到大量的数据。
再如,大家每个人的手机可能都是某些软件的数据收集终端,大家每天的运动步数可能会被支付宝/微信记录下,大家每天点开软件的次数等等这些操作,都是各个软件收集数据的一个手段。这些数据可以直接放入到大数据环境当中,也可以通过关系型数据库做一个跳板。
2.从数据库导入
在大数据技术风靡起来前,关系型数据库(RDMS)是主要的数据分析与处理的途径。许多公司的业务逻辑数据都是存放在关系型数据库中。比如一个电商网站,你购买了一件商品,发生的这种行为绝对会生成一条数据在数据库中。
比如你收藏了一件商品、退货了一件商品等等这种行为都会被记录到数据库中。发展至今数据库技术已经相当完善,当大数据出现的时候,行业就在考虑能否把数据库数据处理的方法应用到大数据中。
虽然出现Hive等大数据产品,但是在生产过程中业务数据依旧使用RDMS进行存储,这是因为产品需要实时响应用户的操作,在毫秒级完成读写操作,而大数据产品不是应对这种情况出现的。
到这里你可能就有一个疑问,如何把业务的数据库同步到大数据平台中?一般来说业务数据大家使用实时和离线采集数据来将数据抽取到数据仓库中。然后再进行后续数据处理和分析,大家常用的数据库导入工具是Sqoop。
Sqoop是Apache旗下一款Hadoop和关系型数据库之间传送离线数据的工具。实现关系型数据库同Hadoop集群的Hdfs、Hbase、Hive进行数据同步,是连接传统关系型数据库和Hadoop的桥梁。
3.日志导入
日志系统将大家系统运行的每一个状况信息都使用文字或者日志的方式记录下来,这些信息大家可以理解为业务或是设备在虚拟世界的行为的痕迹,通过日志对业务关键指标以及设备运行状态等信息进行分析。
除了常规记录的方式收集日志之外,一般用户的一些行为日志收集的方式大家采用埋点的形式进行收集。埋点的意思实际上是在前端页面上放上一个监控点,它能够记录下你所有的一些行为,比如你鼠标来来回回移动了几下,你点击了哪些地方,你在这篇文章上停留了多久,你在输入框中输入了什么字然后又删除了等等所有的一些行为,都可以被埋点所记录。
而将日志数据导入到大数据环境中也有许多的方案,常见的日志收集解决方案如ELK搭建日志采集+日志查询+可视化系统。
Flume+Kafka+Hive/Spark+SparkStreaming实现日志的实时采集+离线分析+实时处理的架构等等。
4.爬虫
爬虫是一种通过模拟正常人浏览访问网站的一类程序,它通过模拟正常人访问网站,从而达到获取该网站数据的目的,比如说偶访问了一下天气预报网站,并复制了今天的温度发给女朋友,偶说对女朋友说“宝贝,今天温度很合适,咱们去爬山吧”,女朋友回“分手吧,40度的温度你叫偶爬山,你根本不爱偶”。看吧,偶成功通过获取网站的数据丢失了一个女朋友。爬虫就是通过模拟人的方式去访问网站,并获取网站的数据的。
时至至今,爬虫的数据成为公司重要战略资源,通过获取同行的数据跟自己的数据进行支撑对比,管理者可以更好的做出决策。爬虫也是一个非常有用和常见的数据获取方式.
总结一下,数据采集是数据分析、数据挖掘工作中的第一步。数据采集的准确性决定了这个数据分析报告是不是有使用价值。只有当数据采集具有科学性、客观、严密的逻辑性时,建立在这样的数据分析基础之上得出来的结论才具有现实的价值和意义。
希望偶的回答可以帮到你,欢迎留言评论或私信交流。