这篇文章来自一个公司内部的分享,是自己所服务的业务中数据平台的发展历程,已经讲了有几个月了,最近打算挑几个点拿出来用文章的形式写出来。是自己进入公司以来参与过或者接触过的数据型项目的情况。基本包含了业务数据分析的整个流程。这篇文章纯文字描述,没有任何图呵呵。所以看我需要耐心。
1、最早的数据分析可能就报表
目前很多数据分析后的结果,展示的形式很多,有各种图形以及报表,最早的应该是简单的几条数据,然后搞个web页面,展示一下数据。早期可能数据量也不大,随便搞个数据库,然后SQL搞一下,数据报表就出来了。但是数据量大起来怎么分析呢?数据分析完了怎么做传输呢?这么大的数据量怎么做到实时呢?分析的结果数据如果不是很大还行,如果分析的结果数据还是很大改怎么办呢?这些问题在这篇文章中都能找到答案,下面各个击破。
2、要做数据分析,首先要有数据
这个标题感觉有点废话,不过要做饭需要食材一样。有些数据时业务积累的,像交易订单的数据,每一笔交易都会有一笔订单,之后再对订单数据作分析。但是有些场景下,数据没法考业务积累,需要依赖于外部,这个时候外部如果有现成的数据最好了,直接join过来,但是有时候是需要自己获取的,例如搞个爬虫爬取网页的数据,有时候单台机器搞爬虫可能还爬不完,这个时候可能就开始考虑单机多线程爬取或者分布式多线程爬取数据,中间涉及到一个步骤,就是在线的业务数据,需要每天晚上导入到离线的系统中,之后才可以进行分析。
3、有了数据,咋分析呢
先将数据量小的情况下,可能一个复杂的SQL就可以搞出来,之后搞个web服务器,页面请求的时候,执行这个SQL,然后展示数据,好了,一个最简单的数据分析,严格意义上讲是统计的分析。这种情况下,分析的数据源小,分析的脚本就是在线执行的SQL,分析的结果不用传输,结果的展示就在页面上,整个流程一条龙。
4、数据量大了,无法在线分析了,咋办呢
这个时候,数据量已经大的无法用在线执行SQL的形式进行统计分析了。这个时候顺应时代的东西产生了(当然还有其他的,我就知道这个呵呵),数据离线数据工具hadoop出来了。这个时候,你的数据以文件的形式存在,可能各个属性是逗号分隔的,数据条数有十几个亿。这时候你可能需要构建一个hadoop集群,然后把自己的文件导入到集群上面去,上了集群之后,文件就是HDFS的格式了,然后如果要做统计分析,需要写mapreduce程序,所谓的mapreduce程序,就是实现map和reduce的接口,按照自己的业务逻辑写分析流程,之后把程序打成jar包上传到集群,之后开始执行。分析后的结果还是文件的形式产生。
5、分析个数据还要写java代码是不是效率低了点
这个确实是,mapreduce的程序,本身的可测性没有执行一个简单的单元测试来的爽,所以效率确实不高。这个时候,hive出现了,hive是一个数据仓库分析的语言,语法类似于数据库的SQL,但是有几个地方是不同的。有了hive之后,数据分析就好之前写SQL一样了,按照逻辑编写hive SQL,然后控制台执行。可能最大的感觉是,数据库的sql很快就能有结果,但是hive的,即使很小的一个数据分析,也需要几分钟时间。构建hive,需要在hadoop的集群上,原理很简单,就是把文件构建成表的形式(有一个数据库或者内存数据库维护表的schema信息),之后提交写好的hive sql的时候,hadoop集群里面的程序把hive脚本转换成对应的mapreduce程序执行。这个时候,做离线的数据分析简单写脚本就行了,不用再搞java代码,然后上传执行了。
6、数据产生的结果,怎么搞到线上提供服务的数据库中呢
这个时候分析的结果有了,可能是一个很宽很长的excel表格,需要导入到线上的数据库中,可能你想到了,如果我的数据库是mysql,我直接执行load 命令就搞进去了,哪有那么麻烦。但是数据源可能有多了,mysql/oracle/hbase/hdfs 按照笛卡尔积的形式,这样搞要搞死程序员了。这个时候datax(已经开源)出现了,能够实现异构数据源的导入和导出,采用插件的形式设计,能够支持未来的数据源。如果需要导数据,配置一下datax的xml文件或者在web页面上点击下就可以实现了。
7、离线分析有时间差,实时的话怎么搞呢
要构建实时的分析系统,其实在结果数据出来之前,架构和离线是截然不同的。数据时流动的,如果在大并发海量数据流动过程中,进行自己的业务分析呢?这里其实说简单也简单,说复杂也复杂。目前我接触过的,方案是这样的,业务数据在写入数据库的时候,这里的数据库mysql,在数据库的机器上安装一个程序,类似JMS的系统,用于监听binlog的变更,收到日志信息,将日志信息转换为具体的数据,然后以消息的形式发送出来。这个时候实现了解耦,这样的处理并不影响正常的业务流程。这个时候需要有个Storm集群,storm集群干啥事情呢?就一件事情,分析数据,这个集群来接收刚才提到的JMS系统发送出来的消息,然后按照指定的规则进行逻辑合并等计算,把计算的结果保存在数据库中,这样的话,流动的数据就可以过一遍筛子了。
8、分析的结果数据特别大,在线请求这些结果数据数据扛不住了,咋搞
一般的结果数据,数据量没有那么大,也就几十万的样子,这样的数据级别,对于mysql这样的数据库没有任何压力,但是这个数据量如果增加到千万或者亿级别,同时有复杂的SQL查询,这个时候mysql肯定就扛不住了。这个时候,可能需要构建索引(例如通过lucene来对于要检索的字段添加索引),或者用分布式的内存服务器来完成查询。总之,两套思路,一个是用文件索引的形式,说白来就是空间换时间,另外一种是用内存,就是用更快的存储来抗请求。
9、在线的数据库,除了mysql、oracle之外,还有其他选择不
其实目前大家的思维定势,往往第一个选择就是oracle或者mysql,其实完全可以根据场景来进行选择,mysql和oracle是传统的关系型数据库,目前nosql类的数据库也很多,例如HBase就是其中一个重要的代表。如果数据离散分布比较强,且根据特定的key来查询,这个时候HBase其实是一个不错的选择。
10、空间的数据怎么分析
上面的分析大都是统计维度的,其实最简单的描述就是求和或者平均值等,这个时候问题来了,大数据量的空间数据如何分析呢?对于我们电子商务而言,空间数据可能就是海量的收货地址数据了。需要做分析,第一步就是先要把经纬度添加到数据中(如果添加经纬度,这个可以搞http的请求来通过地图服务提供商来或者,或者是根据测绘公司的基础数据来进行文本切割分析),之后空间数据是二维的,但是我们常见的代数是一维的,这个时候一个重要的算法出现了,geohash算法,一种将经纬度数据转换为一个可比较,可排序的字符串的算法。然后,这样就可以再空间距离方面进行分析了,例如远近,例如方圆周边等数据的分析。
11、上面这些仅仅是统计,如果想搞算法或者挖掘之类的,怎么搞呢
上述的分析,大多数是统计分析,这个时候如果想高一点高级的,例如添加一个算法,咋搞呢?其他复杂的算法我没咋接触过。将拿一个我练过手的算法来讲吧。逻辑回归,如果样本数据量不是很大,可以采用weka来做了个回归,获得一个表达式,然后在线上系统中应用这个表达式,这种类似的表达式获取对于实时性要求不是很高,所以公式每天跑一次就行了。如果数据量比较大,单机的weka无法满足需求了,可以将weka的jar包集成在系统中分析,当然也可以通过hadoop中的mahout来进行离线分析,获取这个表达式。
12、我就是想离线分析数据,但是受不了hive或者hadoop的速度,咋搞
其实搞过一段时间hadoop的人肯定有一点不爽,就是离线分析的速度太慢了,可能需要等很久,这个时候spark出现了,他和hadoop类似,不过由于是内存中计算,所以速度快了很多,底层可以介入HDFS的文件系统,具体我没有使用过,但是公司内部一个团队目前已经用spark来进行分析了。
13、这就是搞大数据了?
有了这些工具就是搞大数据了?答案肯定不是,这个仅仅是工具罢了。真正搞大数据的可能在于思维的变化,用数据来思考,用数据来做决定。目前的无线和大数据啥关系?我觉得无线的终端是数据的来源和消费端,中间需要大数据的分析,两者密不可分啊。
至此,我的疑问OK了,这些问题摸索差不多用了两年左右的时间,最终获取的,可能就是大数据分析的解决方案了。
但是,这篇文章仅仅是方法论,任何细节中可能都有坑。不要怕,有坑才能成长。
相关推荐
根据给定文件的信息,我们可以梳理出蘑菇街APP及其数据发展历程中的关键知识点,这些知识点涵盖了从初期探索到成熟发展的各个阶段。 ### 一、蘑菇街APP的PMF阶段 #### 时间段: - **2011年7月至2012年1月** #### ...
ISMP的研发历程可以追溯到2003年,当时提出了业务网络的概念,并在后续几年中不断迭代和完善,从ISMP 1.0到ISMP 2.0,经历了产品可行性验证、现场试验以及在六省一市的招标建设。2007年的目标主要是深化现场试验,...
数据中心的发展经历了三个主要阶段: 1. **第一平台(1970年代)**:这个时期的数据中心以大型机为主,搭配终端设备,主要处理计算型负载,采用封闭式的Mainframe-Terminal架构。 2. **第二平台(1990年代)**:...
华为的数据治理始于2007年,并经历了两个重要的发展阶段。其数据治理的核心理念在于通过数据架构和标准的统一,确保数据的质量与准确性,从而支持业务创新与科学决策。数据整合与治理对于企业数字化运营至关重要。 ...
3. **行业发展历程** - BI在中国的发展经历了从传统BI(侧重于报告和查询)到敏捷BI(强调灵活性和快速响应)再到智能BI(融合AI和云计算,简化使用)的演变过程。 4. **厂商发展与分类** - BI厂商可以分为传统BI...
Windows 1.0 是微软第一款图形用户界面,发布于 1985 年 11 月,晚于苹果 Mac 近两年。由于微软与苹果间存在一些法律纠纷,Windows 1.0 缺乏一些关键功能,例如重叠式窗口和回收站。用现在的眼光看,它的失败并不令...
2004年的数据显示,两家公司的毛利率和其他业务利润率相近,反映出在商品定价方面具有相当的竞争力。 三、美国第一、二连锁家电零售商发展历程启示 1. BestBuy发展历程 BestBuy的成功并非单纯因为其自身强大,而是...
- **发展历程**:中国金融业的数据治理经历了以下几个阶段: - **起步与初步建设(2001-2012)**:此阶段主要是数据仓库和商业智能系统的建设,以及解决数据可见性和可用性的初级问题。 - **体系化构建(2012-2018...
Apache Flink,作为大数据处理领域的重要成员,其发展历程和在阿里巴巴的应用实践,对于理解现代大数据处理技术具有重要意义。本文将深入探讨Flink的技术演进、核心特性以及在阿里巴巴集团的实际应用。 Flink的起源...
总结来说,数据挖掘是应对大数据挑战的关键技术,它的概念、发展历程和技术演进揭示了从原始数据中获取知识的重要性。随着技术的不断进步,数据挖掘软件将更好地服务于各个行业,帮助决策者从海量信息中获取洞察,...
【中国企业信息化发展历程】 中国企业信息化的发展历程可追溯至20世纪80年代,初期主要依赖电话、传真和信函等传统方式进行商业沟通与文件传递。随着国家金关、金桥、金卡等重大信息化工程的启动,企业在90年代开始...
12. 数据要素发展历程:经历了起步阶段、成长阶段、变革阶段和融合阶段,未来发展方向为数据融合、智能决策和数据资产管理。 13. 数据资产化产生背景:数据融合阶段将数据要素的应用方向分为日常运营和管理决策支持...
中国移动在手机游戏业务的发展历程中,不断优化平台和销售策略。从2005年至2009年,游戏业务平台经历了从MOTO平台升级到通用下载平台,再到专门的游戏业务平台的演变,逐步形成游戏业务包体系和渠道销售体系。此外,...
### SQL 的发展历程及其前景 #### SQL简史与数据库简史 - **起源与发展:** SQL(Structured Query Language,结构化查询语言)起源于20世纪70年代初,由IBM的研究员Donald D. Chamberlin和Raymond F. Boyce共同...
数据资产管理的发展历程与数据管理、数据治理密切相关。数据管理自计算机管理系统诞生以来已有近40年的历史,而数据治理理念则在数据仓库应用普及后逐渐形成。数据资产管理则是这两个领域的结合,加上数据资产化的...
本篇文章将深入探讨数据仓库的发展历程、核心概念以及自然演化体系结构的问题。 首先,决策支持系统(DSS)的演进是一个长期且不断发展的过程。从20世纪60年代初到1980年,DSS经历了从早期计算机时代的简单文件处理...
形成阶段涉及数据基础能力建设(如数据采集和存储)和业务数据化;管理与变现阶段涵盖数据资产的治理、分析、可视化以及变现。目前,大多数企业仍处于数据资产形成的第一阶段,尤其是数据基础能力建设环节。 【行业...
京东是中国知名的电商平台,自2004年转型电子商务以来,经历了快速的发展。这份分析报告主要涵盖了京东的发展历程、经营数据和运营模式。 首先,我们来看看京东的发展历程。2005年京东多媒体网开通,标志着京东正式...
日本银行业发展历程研究精品报告2020.pdf详细解读: 一、日本银行业现状 日本银行业在全球银行体系中占据重要地位,根据《银行家》杂志2017年的综合排名,三菱UFJ金融集团作为日本唯一的入围者,位列全球TOP10榜单...