提到大数据,大家或多或少都有所了解。大数据具有数据量大、数据类型丰富多样、数据增长速度快等特点,所有数据分析都必须基于真实的数据集才有意义,而数据质量直接影响到大数据分析的结果。
作为学习者,我们需要关注的是大数据能解决哪些问题,应用于哪些领域,需要学习哪些内容以及重点是什么。总的来说,我们需要学习的是大数据生态圈中的技术组件,以及贯穿整个数据分析流程的分析方法和思想,思路尤为重要。只有明确了数据分析的场景和流程,才能确定需要整合哪些大数据组件来解决问题。
大数据分析的第一步是数据的采集和管理。了解数据是如何产生的以及如何被捕获是非常重要的,那些看似杂乱的数据实际上是可以被分析的。
自动产生的数据容易理解。在使用互联网或各种应用的过程中,填写提交表单会产生数据。同样,在线下环境中,例如银行开户、纸质表格填写等,最终都会转化为电子数据进入系统。通常,我们将此类行为称为用户注册,通常是数据产生的终点。此外,用户使用平台功能时会上传和发布各种类型的数据,如文本信息、音频、视频等,这些都是数据产生和积累的方式。
对于用户行为数据,主要来源于应用程序埋点和捕捉。用户使用应用程序时必须通过鼠标点击或手指触碰与界面交互。以网页应用为例,几乎所有鼠标的行为都可以通过事件监听来捕捉,包括鼠标停留时间、是否点击等,我们甚至可以根据用户行为数据绘制出整个页面的热力图。在不同的应用场景中,可以进一步细分行为类型、功能模块、用户信息等维度,进行更深入的分析。
常见的结构化数据存储在关系型数据库中,如MySQL和Oracle,这些数据非常规范,因为关系型数据库采用写时模式,不符合预设数据类型和规范的数据不会被存入数据库。此外,能直接导入数据库的数据文件也可以视为结构化数据,如CSV格式,这些数据通常需要一致的列分隔符、行分隔符和日期格式。
非结构化数据是指除结构化数据外的另一类数据,通常没有预期的数据结构,存储在非关系型数据库中,如Redis和MongoDB,使用NoSQL进行操作。也可能包含非文本类型的数据,需要特殊处理和分析。
大数据预测并不是绝对准确的,但可以通过统计分析和经典数据挖掘算法进行辅助决策。大数据的预测基于算法,是数学的,也是科学的。例如,给定三个点(1,1)、(2,2)、(3,3),我们可以大致猜测函数可能是y=x。实际分析过程比这复杂得多,需要结合实际知识和行业经验不断优化才能得到可靠的模型。
了解了什么是大数据之后,接下来介绍一下大数据开发这一岗位。下面是几个典型岗位描述(JD:Job Description):
从这些岗位描述中可以看出,大数据开发工程师通常会与业务对接,针对特定场景进行数据处理,或者开发大数据产品。大数据开发工程师不一定只服务于大型公司,也可以开发通用的大数据产品。
如果是分析公司内部数据,通常会更侧重使用大数据组件和算法库,构建可行的数据分析方案。现在完全不涉及算法的大数据岗位已经很少了。算法指的是机器学习库和数据挖掘算法,至少要知道如何控制算法的输入和输出,以及算法能解决的问题。
如果是开发大数据产品,如建模平台,或专注于数据采集、可视化解决方案,那么更适合有开发背景的人转型为大数据开发工程师。这要求既懂原始服务端框架,又能驾驭大数据开发API。
从事大数据开发需要掌握的技能主要包括: - 操作系统:Linux(基本操作、软件维护、权限管理、定时任务、简单Shell) - 编程语言:Java(主要)、Scala、Python等 - 数据采集组件及中间件:Flume、Sqoop、Kafka、Logstash、Splunk等 - 大数据集群核心组件:Hadoop、Hive、Impala、HBase、Spark(Core、SQL、Streaming、MLlib)、Flink、Zookeeper等 - 计算机或大数据相关专业
数据分析师的工作更偏向于建立算法模型,这是垂直领域的深耕。通常不能直接使用已有的算法,需要进行评估、优化或组合使用。此外,还必须具备该领域的业务经验。
数据分析师需要掌握的技能包括: - 编程语言:Python、R、SQL等 - 建模工具:MATLAB、Mathematica等 - 熟悉机器学习库及数据挖掘经典算法 - 数学、统计学、计算机相关专业,对数据敏感
介绍了大数据相关的两个主要岗位,实际上与大数据相关的岗位还有很多,例如ETL工程师。随着数据量的增加,从传统ETL工具向大数据集群过渡成为趋势。
学习大数据涉及许多技术点,如何学习更高效呢?首先,大数据开发入门较为简单。对于Linux操作系统和编程语言部分,不必过多解释。不要觉得某些内容没用就跳过,编程思维和解决问题的方法同样重要。对于大数据相关组件,虽然看起来复杂,但要抓住主线,即完整的数据分析流程。在学习过程中,要了解各组件的特点、区别和适用场景。
离线计算使用历史数据,即不再变化的数据。在数据源确定后,这些数据不会添加或更新,适合对实时性要求不高的场景。大多数情况下是周期性地计算某个目标或执行任务,运算时间基本上可以控制在分钟级别。
实时计算面临的数据是不断流入的,需要使用合适的组件处理实时流入的数据。有时单位时间内数据流入较多,生产较慢;有时单位时间内数据流入较少,生产较快。因此,在采集数据时既要保证数据不丢失,还需要有中间件来管理数据。在进行实时计算时,可以使用微批次或其他方式,同时要处理好计算结果合并的问题,实时展示最新结果。
以上只是简单列举了一些不同场景下的数据流程组件整合方案,目的是让大家善于发现和总结不同组件的特点,把合适的组件放在合适的位置。这也是面试官常问的问题。每个组件的使用方法和调用API并不复杂,重点在于流程化、一体化,把组件之间连接起来,不断渗透和强化数据分析和处理的思路,这才是学习的关键。
文章来源:大数据文摘