数据采集是数据系统必不可少的关键部分,也是数据平台的根基。根据不同的应用环境及采集对象,有多种不同的数据采集方法,包括:
系统日志采集
分布式消息订阅分发
ETL
网络数据采集
Flume是Cloudera提供的一个高可用的,高可靠的,分布式的海量日志采集、聚合和传输的系统,Flume支持在日志系统中定制各类数据发送方,用于收集数据;同时,Flume提供对数据进行简单处理,并写到各种数据接受方(可定制)的能力。
分布式消息订阅分发也是一种常见的数据采集方式,其中,Kafka就是一种具有代表性的产品。Kafka是由LinkedIn公司开发的一种高吞吐量的分布式发布订阅消息系统,用户通过Kafka系统可以发布大量的消息,同时也能实时订阅消费消息。
Kafka的架构包括以下组件:话题、生产者、服务代理、消费者
ETL是英文Extract-Transform-Load的缩写,常用于数据仓库中的数据采集和预处理环节(如图所示)。顾名思义,ETL从原系统中抽取数据,并根据实际商务需求对数据进行转换,并把转换结果加载到目标数据存储中。可以看出,ETL既包含了数据采集环节,也包含了数据预处理环节。
Kettle是一款国外开源的ETL工具,使用Java语言编写,可以在Windows、Linux、Unix上运行,数据抽取高效、稳定。
网络数据采集是指通过网络爬虫或网站公开应用程序编程接口等方式从网站上获取数据信息。该方法可以将非结构化数据从网页中抽取出来,将其存储为统一的本地数据文件,并以结构化的方式存储。它支持图片、音频、视频等文件的采集,文件与正文可以自动关联。网络数据采集的应用领域十分广泛,包括搜索引擎与垂直搜索平台搭建与运营,综合门户与行业门户、地方门户、专业门户网站数据支撑与流量运营,电子政务与电子商务平台的运营,知识管理与知识共享,企业竞争情报系统的运营,BI商业智能系统,信息咨询与信息增值,信息安全和信息监控等。