实习总结和大数据BI

版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/u014446838/article/details/54809680

时光匆匆,随着长大,一年的时光总感觉晃眼间已成为过去,回顾2016这一年,房子的用途从住的质变成炒的;三星手机默默出了个炸,其他厂商无力的表示要不起;英国脱欧了;奇异的黑马特朗普也站起来了,我自己貌似也做了很多事情,研二第一学期体会了什么叫真正的自由分配时间;第一次为了一个女娃去健身房弹吉他但还是徒劳;在开老师的帮助下完成了一篇论文,第一次投了一篇SCI,虽然不知道结果是什么样的;在学校管理学院实验室写了三个多月的Java;不知不觉的在Asininfo数据公司实习了快三个月;最主要的是神经质的来了个思想大转变,坚定的想好硕士毕业就工作的,可能由于自己还没做好工作的准备,自己又想读人工智能方向的博士。很多事情都不是一尘不变,我们只能学会随时间去改变去适应,不要问我去哪里,我的眼前只有远方。闲谈完了,下面该说说本篇博客的正事了,我主要是想通过这篇博客总结一下这三个月学到的一些知识以及帮助那些着迷大数据但思绪全无的门外汉,认识一下大数据是什么,就带你认识一下,其他的就别想了。

大数据技术是随着社会科技和互联网发展,在数据的不断累积和数据藏有巨大潜在价值的诱导下逐渐发展起来的一类计算机技术。比如我们现在有一个需求:中国移动的领导想让我们程序员给他制作一张用来查看volte业务使用情况的月报表,以及让我们判断哪些用户是具有潜在价值的。那么我们该怎么做了?先想想你会怎么做,后文中我会阐述BI的具体操作流程。

一:感触

不知道大家是否和我一样,我在学习技术的时候,总是学点皮毛然后就去学别的知识,新的东西总感觉对我更具有吸引力,我不知道是自己志向远大不容满足,还是养成了挑三拣四见异思迁的陋习。在接触到大数据知识之前,和我写的Java网站后台技术相比,总感觉这玩意是高大上不可攀的东西,于是就在网上去寻找大数据方面的知识,搜出的东西真是让人感觉心有余而力不足,知识太多了,感觉学会这么多的东西是一个大的工程。带着对大数据技术的渴望和好奇我就去亚信数据去实习了三个月。说实话,工作的主要工作无非是写SQL,但是有这样的一个环境,再加上看了一些书我重新认识了大数据,特别是BI(商业智能)。

二:技术

引用百度百科的定义,所谓大数据(big data),指无法在一定时间范围内用常规软件工具进行捕捉、管理和处理的数据集合,是需要新处理模式才能具有更强的决策力、洞察发现力和流程优化能力的海量、高增长率和多样化的信息资产。对比我们现在处理数据的方式,最常用的方式是通过数理统计的取样方法对数据分析,然后预测总体数据的意义,这是因为数据量太大,我们暂时的方法是无法去处理的。而随着现在大数据技术的发展,往往我们不需要去抽样数据,而是利用所有的数据做分析,最终来做决策。


从技术上讲,大数据和云计算的关系就好比一枚硬币的正反面密不可分,大数据必然无法由单台的计算机来处理,必须采用分布式架构。这将涉及到云计算的分布式处理、分布式数据库、云存储和虚拟化技术。比如对于一个中小的企业来说,如果计划做一个数据分析项目,来通过数据查看公司过去的经营情况以及预测未来做一些决策,比如现在公司的数据量以达到大数据的量,那么我们怎么来组织这个项目呢?我们还会像之前那样,购买自己的服务器,然后搭建自己的集群环境来进行吗,肯定不是,我们的解决方法是购买云服务,我们只需要一台能联网的电脑,打开浏览器,登录租用的云登录界面,一切操作都在云平台中进行,你所需要的开发环境都已经完好的部署在云平台,而且环境的维护完全由云服务的公司来承担,你只需要专注于自己的开发。当资源不足时,比如集群节点不够或者内存不足时,你只需要简单的填写一个表单,云服务公司会瞬间在维持当前已开发功能不变的情况下扩展你的需求。这样的分工对于各个公司是有利的,因为云需求公司不需要花很大的价钱去购买服务器、去设计架构、去配置环境、去运维,而且最主要的是可以专注于做自己该做的事情。对于云提供公司来说,它主要的工作就是研究自己的云架构,包括设计由分布式文件系统(比如HDFS)、集群、云计算(MapReduce)复杂结合而成的云存储架构以及配置大数据相关的一些技术环境(比如ETL、数据仓库、分布式数据库、数据挖掘系统、可视化工具等等)。这样的分工将会是未来的发展趋势。


BIBusiness intelligence)即商务智能,用来将现有的数据进行有效的整合,快速准确的提供报表并提出决策依据,帮助企业做出明智的业务经营决策。因此BI是一种处理方案,而大数据是一种处理数据的技术,传统的BI没有用到大数据技术,而现代的BI也称作大数据BI,已经结合了传统的BI技术和大数据技术,这使得BI在处理数据时多了一个方案,比如当我们数据量庞大而且数据混合了很多非结构化的数据,我们就采用现在很流行的hadoop一整套大数据技术来处理,而如果数据量不是很大而且都是结构化的数据,我们当然可以采用传统的BI解决方案(传统关系型数据库集群,如oracle集群,MySQL集群,db2集群,greenplum集群技术)。

 


大数据BI使用到的技术一:主要有ETL、数据仓库、OLAP、数据挖掘、可视化报表技术;技术二:Hadoop、流处理海量结构化和非机构化数据的ETL问题,基于分布式文件系统(HDFS)的分布式计算(MapReduce)问题,用hiveredishbase等高速读取的问题,还有其他在线分析等等方面的问题。关于每项技术的用发,大家自己搜资料学习吧,三言两语谈不清楚。

现在我们回到之前的那个问题,就移动的那个问题,我们怎样通过BI来实现了,主要是阐述一下BI的流程:第一,需求分析阶段,要搞清楚用户需求,就本例用户想要的是volte业务使用情况的月报表,必须要搞清楚月报表中包括哪些指标(包括维度指标和度量指标)等等;第二,模型设计,该阶段是BI非常重要的阶段,我们必须要熟悉详细系统架构、以及数据的一些标准(如字段的命名规则等等)、调研熟悉源业务系统,要明确知道数据口径,在考虑了以上所有资料的基础上来做数据模型设计,既包括DW(数据仓库)层的模型也包括DM(数据集市)层的模型;第三,开发阶段,包括ETL开发、模型开发、报表开发,元数据管理,权限设置等等,简单的来讲,这个阶段主要是写SQL来根据口径汇总数据以及开发报表(包括后台模型如universe设计以及前台报表设计如web intelligence);第四,测试阶段,也就是看跑出来的数据是否正确;第五,上线;第六,优化与运维。

通过我大概的介绍,想必菜鸟应该会有一点感觉,我们首先要调整我们对大数据的看法,我们不要把它看的太高大而敬畏不敢接触它,事实上,它和我们其他的技术都是一样的,对于程序员来讲,都是一样,就是明确需求敲代码。从事大数据开发的,无非是用SQL汇总数据,用Javamapreduce或者报表可视化设计运维等等,具体的技术只有自己接触到才会熟悉,毕竟大数据太庞大了,它一整套东西我们没必要都会用,具体用到再学习就是了。

三:目标

    在大数据的时代,我们往往需要通过大量的数据来挖掘知识,而挖掘往往需要设计算法来让机器自己运作,这就是所谓的机器学习,神经网络算法是一种很有价值的机器学习算法,在人工智能方面有很大的价值,今后主要的精力应该朝这个方向努力,那么在大数据时代,你的发展方向是什么呢?

展开阅读全文

没有更多推荐了,返回首页