简介: SPARK+AI SUMMIT 2020中文精华版线上峰会将会带领大家一起回顾2020年的SPARK又产生了怎样的最佳实践,技术上取得了哪些突破,以及周边的生态发展。本文是阿里巴巴高级技术专家章剑锋做的相关分享,介绍了YipitData公司基于Databricks平台搭建的分析平台。

原视频链接:https://developer.aliyun.com/live/43188

活动链接:SPARK中文峰会7月4日(二)|Ray On Spark

Spark等引擎都是作为工具被开发者使用的,而我们使用这些工具的最终目的是搭建合适的平台提供给业务方。以下是YipitData‘s Platform的相关介绍。

一、为什么要用到平台 (Why a platform) ?

YipitData是一家咨询公司,其客户主要是投资基金以及财富五百强中的一些公司。该公司通过自己的数据产品进行分析,提供给客户相应的数据分析报告。YipitData的主要产出方式和赚钱方式就是做数据分析,其公司内部有53个数据分析师,却只有3个数据工程师。数据分析的基础是数据,所以对于该公司来说大数据分析的平台是非常重要的。

二、平台中有什么 (What is in our platform) ?

YipitData公司希望通过他们自己的数据分析平台能够让数据分析师不需要付出太大的成本就完成数据分析的任务,也就是Own The Product,而这个过程主要包括如下图所示的Data Collection、Data Exploration、ETL Workflows和Report Generation四个阶段。

上面我们提到YipitData公司的人员主要包括数据分析师和数据工程师,其中数据分析师来分析数据并且提供基于数据的问题解答和分析报告,数据工程师来给数据分析师提供数据和分析数据的平台。

Databricks中的一个产品叫做Workspace,简单来说它就是一个Notebook,你可以在其中写python、Scala、SQL等语言的代码,然后交由Databricks平台去执行并返回结果。YipitData' Platform是基于Databricks平台来搭建的,简而言之就是他们对Databricks进行了更深一层的封装,创建了一个Python Library,更加方便分析师来进行使用。

(一)获取数据 (Ingesting data)

YipitData公司的数据量是非常大的,有压缩后大小超过1PB的Parquet,60K的Tables和1.7K的Databases。他们的数据收集使用的是Readypipe,简单理解就是一个网络爬虫,在有了URL之后,将网页内存download下来然后进行存储,实现从URLs到Parquet。首先,使用Readypipe对网页进行爬取,然后以流的方式源源不断的写入kinesis Firehose,kinesis Firehose会接着将数据写入AWS的S3上。在这个阶段所存储的数据都是原始JSON数据,是没有schema的,这类数据对于数据分析师来说是很难进行使用的。因此,第二步我们要对数据进行一些格式转换和清理,比较典型的做法是将JSON文件转换成Bucket,这一步也自带了压缩效果。转换完成之后会有两个输出,如下图所示,一个是元数据,会写入Glue Metastore,另外一个是数据,会写入Parquet Bucket中。通过上面的过程,就完成了数据的收集和清理过程,整个过程是非常经典,非常有参考价值的。

另外,因为数据流是实时数据,每隔一段时间就会产生一些JSON文件,属于小文件,时间久了S3上面会存在非常多的小文件,带来性能方面的许多问题,于是要对小文件做相应的Merge处理,将小文件汇聚成大文件,这对后续的处理非常有帮助。
YipitData公司所使用的的数据都是第三方数据,他们本身不生产任何数据,而使用第三方数据会面临一些问题,主要包括如下四类问题:

  • Various File Formats

  • Permissions Challenges

  • Data Lineage

  • Data Refreshes

上面几类问题是在实际业务中经常遇到的,如果不解决好自然也不能有很好的成果产出。YipitData公司解决上面几类问题主要是靠Databricks平台,比如上传并利用额外的元数据将文件转为parquet等,如下图所示。

(二)表实用程序 (Table Utilities)

YipitData's Platform提供了一些table utilities来帮助分析师创建table和管理table。比如下图所示的create_table函数,可以帮助数据分析师更快速地创建table。


上图所示的是一个非常典型的Spark Job的场景,通常包括read、processing和write三个模块。但是对于YipitData公司来说,上面的过程仍然是一个比较繁琐的过程,因为该公司最重要的任务是进行数据分析,且大多数人员也是数据分析师,如果让数据分析师使用Spark API去完成上述过程,还是有一定门槛的。对于YipitData公司来说,最好是把一些功能进行封装,不要暴露太多的底层功能,所以有了上面的create_table函数,大大降低了数据分析师的使用难度。

(三)集群管理 (Cluster Management)

对于数据分析师来说,最后还是要进行计算,就牵涉计算资源的管理,那么YipitData是怎么做的呢?
我们知道,搭建一个Spark集群并不是很难,但是如何搭建一个能够最优化地解决问题的Spark集群并不是那么容易,因为Spark集群有非常多的配置,而这项工作如果交给数据分析师来做的话就更不简单了。为了解决易用性的问题,YipitData的工程师参照T-Shirt的Size划分巧妙地将集群划分成SMALL、MEDIUM、LARGE三类,如下图所示,数据分析师在使用的时候虽然少了灵活性,但是节省了很多集群配置的时间,大大的提高了工作效率。背后的原理也是进行更深层次的封装,将众多参数设置隐藏起来,数据分析师只需要像选择T-Shirt的尺寸一样做选择即可,而无需关心背后的复杂配置如何实现。


在集群管理方面,Databricks还提供了许多其他的API来对集群的计算资源进行管理,比如可以通过REST API控制集群,对集群做各种各样的配置,还可以对集群的配置进行动态调整等等,如下图所示。

(四)ETL Workflow的自动化 (ETL Workflow Automation)

YipitData使用Airflow来实现ETL Workflow的自动化。越来越多的人使用Airflow来管理ETL Workflow,已经逐渐成为ETL的一个标准工具。对于数据工程师来说,Airflow的使用不是很难:首先构建一个DAG,然后去定义其中的TASK,最后定义下这些TASKS的依赖关系即可。但是,终究是要写一段代码来实现这个过程,就需要有人来维护,对于大多数员工是数据分析师的YipitData来说就不是那么合适了。因此,YipitData使用Airflow+databricks的API来自动化构建DAGs。具体来说,每个文件夹就代表一个DAG,每个Notebook就代表一个Task,Notebook中指定一些属性(内部是python脚本),然后通过API来自动化构建DAG文件。通过上面的过程完成整个ETL的自动化,其中用户只需要指定Notebook中的参数值即可。YipitData自动化创建Workflows的过程如下图所示,整个流程都是在Databricks平台上扩展得到的。

三、Q&A

Q1:Databricks和Dataworks都是一站式的数据分析平台,两者的区别是什么?
A1:两者的侧重点不一样。Dataworks绑定在阿里云,而Databricks可以在各个云上使用;Databricks绑定了Spark引擎,而Dataworks可以使用各种引擎;Dataworks在数据治理上更强一些,而Databricks的Spark应用更强一些。

Q2:目前Zeppelin、Jupyter、Databricks产品的分析功能有些类似,他们有什么特别推荐的使用场景吗?
A2:这几个产品最大的特点是提供了交互式的编程环境,和传统的IDE开发不同,他们有着更好的开发效率,尤其是在数据分析和机器学习方面。另外,这类产品也不是只能做交互式开发,也可以用来做ETL。

Zeppelin钉钉群

下面是Zeppelin的钉钉群二维码,大家后续有任何问题可以加入群来讨论。


关键词:Databricks、Spark、Analysis Platform、YipitData

获取更多 Spark+AI SUMMIT 精彩演讲视频回放和ppt,请向本公众号后台发送"0704中文峰会"


对开源大数据和感兴趣的同学可以加小编微信(下图二维码,备注“进群”)进入技术交流微信群。

Apache Spark技术交流社区公众号,微信扫一扫关注

使用Databricks作为分析平台相关推荐

  1. 数据可视化分析平台开源方案集锦

    B/S 架构的数据可视化分析平台开源方案不完全集锦,供各位参考. 排名不分先后.欢迎补充. kibana Elasticsearch 专用的数据分析检索仪表盘.ELK Stack 中的 K. 日志系统 ...

  2. 天兔(Lepus)监控系统慢查询分析平台安装配置

    转http://suifu.blog.51cto.com/9167728/1770672 被监控端要安装pt工具 1 2 3 4 [root@HE1~]## yum -y install perl-I ...

  3. 手把手教你搭建 ELK 实时日志分析平台

    来自:武培轩 本篇文章主要是手把手教你搭建 ELK 实时日志分析平台,那么,ELK 到底是什么呢? ELK 是三个开源项目的首字母缩写,这三个项目分别是:Elasticsearch.Logstash ...

  4. 如何快速采集分析平台日志,并进行展示监控?

    来自:DBAplus社群 作者介绍 小火牛,项目管理高级工程师,具有多年大数据平台运维管理及开发优化经验.管理过多个上千节点集群,擅长对外多租户平台的维护开发.信科院大数据性能测试.功能测试主力,大厂 ...

  5. 生信分析平台方案推介,助力科研

    生信分析平台方案推介,助力科研 专注 专业 共赢 目前生信分析对计算性能和存储高并发性能都提出来新的要求,例如在基因测序分析中,基因序列数目庞大,对基因进行同源性搜寻.比对.分析.系统发育分析等需要对 ...

  6. 121个人电脑搭建微生物组分析平台(Win/Mac)

    121个人电脑搭建微生物组分析平台(Win/Mac) 本节作者:刘永鑫 中国科学院遗传与发育生物学研究所 版本1.0.3,更新日期:2020年8月27日 本项目永久地址:https://github. ...

  7. 手把手教你生信分析平台搭建

    宏基因组按:此系列教程为基因学苑的王通老师原创发布.非常适合刚接受生信,又有服务器管理需求的小伙伴做为入门材料,一共20篇文章,内容涉及服务器选购.Linux系统安装.用户管理.软件安装.软件兼容环境 ...

  8. Hermes实时检索分析平台

    一.序言 随着TDW的发展,公司在大数据离线分析方面已经具备了行业领先的能力.但是,很多应用场景往往要求在数秒内完成对几亿.几十亿甚至几百上千亿的数据分析,从而达到不影响用户体验的目的.如何能够及时有 ...

  9. 使用elk+redis搭建nginx日志分析平台(引)

    http://www.cnblogs.com/yjf512/p/4199105.html elk+redis 搭建nginx日志分析平台 logstash,elasticsearch,kibana 怎 ...

最新文章

  1. MATLAB中如何将一幅图像的地理信息写入另一幅图像
  2. python之运算符
  3. python方法查看_关于查看python的trace的方法
  4. 最小二乘法与最大似然函数的区别
  5. java之jsp页面语法
  6. 回流Reflow和重绘Repaint
  7. Android通过XML来定义Menu
  8. apache下IE6对js的bug处理
  9. Loj#3077-「2019 集训队互测 Day 4」绝目编诗【结论,虚树,鸽笼原理】
  10. 2021年程序员1月薪资统计,你在哪一档?
  11. Python获取文件夹下的所有文件名
  12. 2014年12月15日报
  13. 想知道PDF转Word软件哪个好?向你推荐3个自用软件
  14. speex java_(原创)speex与wav格式音频文件的互相转换(二)
  15. ORA-20011: Approximate NDV failed: ORA-06564: object EXPDDDP does not exist
  16. IIC下挂多外设,SCLK频率高导致挂死疑问
  17. idea gwt 怎么编译_带Spring Boot的GWT
  18. linux下打开chm格式文件
  19. UCF Local Programming Contest 2016 计蒜客解(补)题报告
  20. 小程序一键生成系统网站源码

热门文章

  1. 中国平安真牛,把中国人寿给替了!!!!
  2. 30分钟快速搭建一套私有云平台
  3. 【Python】关于安装爬虫框架scrapy的感悟
  4. Android 面试题 android中级---初级---知识点
  5. LINUX 指令学习
  6. Codeforces 780G Andryusha and Nervous Barriers
  7. 应用程序无法正常启动 0xc000000d
  8. 我们应该怎样面对自己
  9. 关于数据库的操作语句
  10. 英语“死”的委婉说法