开发者学堂课程【2020版大数据实战项目之 DMP 广告系统(第七阶段):Zeppelin_出现契机】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/682/detail/11843
Zeppelin_出现契机
内容介绍:
一、 Zeppelin 内容介绍
二、数据分析是一个探索性的过程
三、如何表达对数据的理解
四、擅长 SQL 和擅长 Scala 的同事如何配合
一、Zeppelin 内容介绍
介绍一下 zeppelin 的一个工具,介绍产品工具。当前此视频,简单告诉大家整个课程。就会在学习的过程当中会更有思路。其次想告诉大家,在做产品出现之前,传统的开发方式里痛点是什么?
在 zeppelin 能够做什么。这时看第一步,就是整个课程的结构应该是怎么样的呢?
整个课程,分为两大部分,第一大部分,要去介绍一下zeppelin它是什么。要对zeppelin入一个门,那包括安装基本的使用,接下来,第二部分zeppelin是一个工具,既然是一个工具,只用了解一下它的基本使用就可以了,比如现在要去玩Windows,也是简单介绍Windows怎么用,然后大家一探索一摸索就会了,zeppelin不是一个技术,它只是一个工具,然后在入门阶段,要简单了解几个知识点,首先第一个知识点要去看一看 zeppelin,然后其次,要去安装一个APP,然后再其次要去简单介绍一下界面。这就是大致入门阶段的三个部分。
首先第一点,zeppelin 是什么?在 zeppelin是什么这一环节当中呢?首先第一步骤,大家了解一下 zeppelin 出现这之前,开发的方式有什么问题,就是传统方式,传统开发方式的痛点,然后接下来,想让大家了解一下,就是有这样的一些痛点。zeppelin如何解决这些问题呢?提供了什么帮助?然后他有什么样的特点,通过这视频,就让大家了解一下传统开发方式的痛点。
二、 数据分析是一个探索性的过程
(需求 -> 看数据集 -> 结果集 -> 结果集反推)
去写一个小项目的时候,一般情况下是先要有需求,要先明白要干什么,然后去看数据集,要了解数据集是一个什么概念。通过需求和数据集就能够知道,最终的结果集应该长成什么样子,要进行数据处理的话,要把数据处理成什么样子,结果即明确了以后就去找其中的步骤,就是要靠大家对于知识的理解,对于数据处理的一些经验,其实可以根据结果及反推,比如现在有这样的一个结果集。结果集上一部应该是怎么样的,得到上一步了以后,上一部又应该是怎么样的,是一步一步的去反推出来最终的结果。这过程根据不同的需求,就会有不同的变化,在讲到后续的项目的时候在进行讲解。
1.没有人能一蹴而就的完成分析和挖掘任务
往往数据挖掘和数据分析是需要多次尝试和调试,不断的迭代和探索数据的过程
2. 数据探索需要一些工具支持
(所用工具为:Spark IDEA(太过于麻烦)-> Spark shell每一步都可以看到运行结果)
Spark shell也太过于简单。对于分布图并不是很好用。
因为要不断的探索数据,所以要求工具必须要支持多种组件,多种语言,要支持可调试
3. Spark shell 是一个比较简单的交互式环境
虽然 Spark shell 能够及时的看到结果,但是其功能还是太过简单,只能在Shell中使用,并且也没太好的方式记录整个调试过程
4.Zeppelin 的一个重点,是让交互式探索变得容易
所以 Zeppelin 要解决的一个比较重要的问题就是让交互式探索变得更容易
(为什么会出现 Zeppelin?数据是探索的过程才能得到结果,而探索就需要工具的辅助,现在的Spark shell 不够好用,所以就有了 Zeppelin 的出现契机。)
数据是探索的过程才能得到结果,如果要探索的话,要有一些工具的支持,现在spark shell不够好用,那怎么办呢?一个叫做zeppelin在这里如何解决问题。
三、如何表达对数据的理解
比如一个比较传统的一个场景。就是通过业务系统,这种关系性LPP的数据库。然后提取数据,经过spark处理,处理完以后是一个ETL的过程,装载到half当中。
然后数据分析师通过half一些分析分析,然后接下来数据过渡到我们自身,比如h base这样的数据库当中,然后,在h base当中,呈现了一些数据的结果,再交给前端的HR来进行相应的访问可视化。通过复杂长的一个流程,才能够表达对数据的理解,这种过程,是很精准的,也很厉害的,但是比较适合用户表达数据。
但是团队内,比如有一个组B,有两个小组。组a想要像组B去共享一些结果,这时候该怎么办呢?在经过一个流程,然后分析,再放到h base里,再通过HRS去写一个前端页面去展示,可以这样,但是不至于这样麻烦。
(业务 -> spark -> Hive - > 分析 -> HBase -> ECharts )
1.如何表达数据分析的结论?
在一次数据分析结束后,总是要有一些结论的,常见的形态如下:
(1)数据分析,得出报表数据,存入HBase或者KUDU之类的数据库中
(2)前端读取Kudu或者 HBase中的数据,展示结果
这种形态的表达比较重,适合对外提供,如果希望在内部进行结论的共享,该如何做呢?
2. Spark shell 只能作为调试工具
Spark shell 是一个交互式工具,但是如果想把整个调试过程,包括对数据的解读都记录下来,使用 Spark shell 还是力有不逮
3. Zeppelin 是一款笔记工具
Zeppelin 是一款笔记工具,意味着Zeppelin的基本操作单位是笔记,在一个笔记中可以同时做到如下三件事
l 使用 Markdown 编写文字性内容
l 编写 Python,R,Scala 等程序,操作 Spark,Flink 等工具
l 展示执行结果,提供丰富的可视化支持
(这三板斧配合起来,足以轻松并且愉快的表达数据结论)
四、擅长 SQL 和擅长 Scala 的同事如何配合
在团队当中,有一些人适合做算法,一些算法工程师,有一些人是专攻理论的,是一些分析师,有一些人,可以做一些ETL,然后对数据来进行一些分析处理这样的一些工作,这些不同的团队。人之间该如何进行配合呢?这是一个问题,正常的情况下怎么配合,发一个邮件,邮件里面带一些结果,每一步应该是怎么样的,或者开一个会,每个人把想法结果给表达出来。
1.有人做算法,有人写代码,有人做研究
在一个数据项目中,是分为很多岗位的,主要通过代码来完成需求和分析数据,但是有些岗位是数学家,或者算法工程师,他们和我们所掌握的技能是不同的
有人只写 SQL,有人只写 Scala,有人只写公式,这些人如何配合起来呢?仅通过Spark shell 来配合显然不够
2. Zeppelin 是一个 Web 程序
Zeppelin是一个Web 程序,以Java 编写,使用 Shiro 做权限控制,所以Zeppelin支持如下功能
l 多人同时访问
l 针对笔记进行权限限制
所以 Zeppelin 可以成为一个团队的配合工具
这是 zeppelin 出现的三大契机,第一点,数据分析,是一个探索性的过程,然后其次,第二个问题就是如何表达结果,结果的表达比较困难和繁琐,第三点,团队之间是需要配合的。
zeppelin 就是正因为这三个原因,做了一个 zeppelin,通过 zeppelin,就可以解决一些问题。
