大数据到数据挖掘过程中理想和现实差别非常的大。很多人开始接触大数据都是被大数据的分析、挖掘等吸引,但是现实却是面对大公司纷繁复杂的系统和应用,如何将不同系统的数据整合在一起便于分析却如此困难。
很多人觉得从事大数据工作就应该重点去学习分析挖掘的算法,但是事实却并非如此,公司从零开始建设大数据平台,其中80%的工作量都是准备数据,其余20%才是分析建模需要做的事。下面我们就举例对中国航空信息数据的分析来说。我们从航信(航信是什么?)提供的数据,分析用户乘机习惯的画像。
方案分享:
首先是获取数据,采用Flume组件功能将远端航信的数据同步到本地进行数据预处理操作。航信提供的数据是文本文件数据,通常数据是延迟24小时生成,如:今天生成前一天的数据,一个航空公司可以获得航信提供的20多种类型的数据。这样的简单重复的工作,需要找一个运行稳定且得到行业认可的数据同步组件,所以我们选用了Flume组件。
将数据迁移至Hadoop平台,针对结构化文本数据采用的HIVE组件分析数据是最优的选择。因为航信给我们的数据已经是结构化的数据,所以采用HIVE组件计算会非常方便。HIVE关联的数据可以使用Hive_SQL进行快速的计算工作,Hive提供一套SQL查询语言,用户在客户端只需要输入SQL语言脚本,执行的时候HIVE将SQL转换为MapReduce执行逻辑程序。
对给出的原始数据进行文本文件数据预处理。HIVE存储计算的数据需将数据加工成统一格式,所以在数据加载到Hive表之前需要对文件数据进行。给我们的文本数据在结构上与HIVE支持的结构拆分有差别所以需要将数据加工成HIVE支持的数据格式。
航信给出的文本文件数据,查看航信标准文件,里面讲解了数据补位规则和占位长度
这种格式的数据,HIVE后期计算将非常困难,所以在数据进入Hive之前需要将程序规则剔除,只留下文件有用的干数据,如下:
PS:如果对于数据文件中记录没有时间的数据在进入HIVE之前的预处理中加上数据执行的时间戳。
将HIVE的分析结果存入列式数据库Hbase中。主要考虑的是Hbase的两大特点。首先,Hbase非常灵活,在不影响其他数据的情况下可以任意动态添加列族,每一个列族里的列个数都是可以不一样,使用非常灵活。其次,Hbase是列式分布式数据库,它存储了一套数据的树形索引规则,数据查找非常的快速。本次用户画像以后还需要增加其他属性的情况下,采用HBase技术非常贴合本次的分析任务。
困惑HIVE查询出来的数据需要和Hbase结构一致才能插入,我想找到一种方法可以多次使用不同的HIVE-SQL分别为Hbase的一条数据插入各自统计数据。
结论:
本次分析基于航信提供的全量数据进行的用户画像分析,重点在于分析的技术方案分享。,这个技术方案可以适应离线数据分析结果以服务的方式高速被应用系统调用的特定场景(这句有点长,看能不能拆成短句),但可能可能并不是最优。