首页 > 其他分享 >快速构建 Spark 核心知识体系

快速构建 Spark 核心知识体系

时间:2023-01-02 21:36:06浏览次数:36  
标签:入门 知识 学习 构建 SQL 磊哥 Spark 数据

大家好,我是 梦想家Alex 。今天想跟大家聊一聊关于 Spark 学习的问题。


对于很多大数据初学者,亦或者希望转行大数据的同学而言,会发现你无论选择哪个方向,不论是离线,实时,还是数据挖掘等,都必须要直面 Spark 这座大山 。


Spark最初可以说是作为Hadoop的补充而出现的,补足了Hadoop在实时数据处理这一块的不足。但是Spark并没有就此止步,而是一直在更新和优化。早期的Spark采取的是RDD数据模型,而在随后的2.X版本中,Spark又开始摒弃RDD,转而采取Spark SQL的Dataset作为统一的数据模型,希望能够构建更加高效的计算框架。

得益于Spark一开始采用的RDD数据模型,在很长一段时间内,Spark高效灵活的编程方式,并且基于内存计算,使用统一的引擎进行批处理、流处理以及交互分析,使得Spark在大数据处理上获得明显的优势。


并且Spark 作为目前应用最广泛的大数据框架之一,一直以来是受到多方的青睐的 。


现在,几乎所有公司都离不开推荐、广告、搜索这 3 类业务场景,因此 Spark 也相应成了大多数互联网公司的标配:​


​美团在 2014 年就引入 Spark,并将其逐渐覆盖到大多数业务线;字节跳动也基于 Spark 构建数据仓库,去服务了几乎所有的产品线;还有 Facebook 也将数据分析引擎切换为 Spark。

 

以美团为例,它海量的日志数据将被汇总处理、分析、挖掘与学习,为各种推荐、搜索系统甚至公司战略目标制定提供数据支持。


而 Spark 能在相同资源使用情况下,把作业执行的速度提升百倍,极大的提高了生产效率,这也是 Spark 逐步替代 MapReduce 作业,成为美团大数据处理的主流计算引擎的原因。

 

我觉得,在发展迅猛的数据应用领域,Spark 能持久地立于不败之地,主要是因为它“快”和“全”。

 

快速构建 Spark 核心知识体系_SQL

Hadoop 和 Spark 的对数几率回归对比,运行速度相差 100 倍

 

Spark 的开发和执行效率都很快,它支持多种开发语言,提供种类丰富的开发算子,让开发者能快速地完成数据应用开发;另外,它在计算场景的支持上也非常强大,能让开发者在同一套计算框架之内,实现不同类型的数据应用。

 

快速构建 Spark 核心知识体系_SQL_02

Spark 子框架与不同的计算场景

 

在数据应用领域,无论你是大数据工程师、数据分析师、数据科学家,还是机器学习算法研究员,Spark 都是必备的傍身之计。

 

但入门 Spark 却不是件容易的事,知识点繁多复杂,Scala 语法也晦涩难懂。如果只照本宣科地看原理,一旦遇到具体的业务需求,大概率还是无从下手。

 

这里推荐给你一副「Spark 知识体系全景图」,涉及 Spark 入门必备的 80% 以上的知识点,十分全面。

 

快速构建 Spark 核心知识体系_SQL_03

Spark 知识体系全景图

 

这张图出自吴磊,他是国内第一批搞 Spark 的人,目前是 Freewheel 公司机器学习团队负责人,主导计算广告业务中机器学习的应用、落地与推广,有丰富的大数据开发与调优经验,曾任职于 IBM、联想研究院、新浪微博等大厂。同时他曾在 CSDN、《 IBM developerWorks 》、《程序员》和  InfoQ 上发布过多篇技术干货,深受好评。

 

最重要的,磊哥还是 2021 年的 AWS Machine Learning Hero 得主,更是 30 个入选人中唯一一个中国人(这个奖每年由亚马逊公司策划和评选,含金量很高)。

 

最近,磊哥推出了《零基础入门 Spark》专栏。在专栏里,他专门结合自己的学习和成长经历,讲了如何快速构建 Spark 核心知识体系,以及 从 0 到 1 入门 Spark 的窍门等,还结合了 Spark 三大计算场景案例的实操。

 


值得一提的是,磊哥专栏里的代码都是逐句注释,而且在讲开发实战技巧的模块,也贴心地用故事来带入,既形象生动又便于理解记忆,做到真正的从项目入手,带你深入浅出玩转 Spark。


 

吴磊是如何讲解 Spark 专栏的?

 

磊哥根据自己多年经验总结了一套「入门 Spark 三步法」,传神地将运用 Spark 比作“驾驶赛车”,而入门 Spark 也和学开赛车一样,仅需三步:


第一步是学基础,掌握 Spark 常用的开发 API 与开发算子,第二步是学工作原理,吃透 Spark 的核心原理,第三步是应对各类场景,玩转 Spark 计算子框架。

 

为了更好地提升大家的学习效率,他在专栏中设计了基础知识、Spark SQL、Spark MLlib 和 Structured Streaming 这 4 个模块,将这“三步走”完美融入其中。

 

快速构建 Spark 核心知识体系_数据_04

“三步走”与专栏内容安排

 

第一个模块是基础知识。他会详细讲解包括RDD编程模型、Spark进程模型、调度系统、存储系统、Shuffle管理、内存管理等在内的 Spark 核心原理,并通过一个个有趣的故事,让你像读小说一样轻松诙谐地弄懂 Spark 。

 

第二个模块是 Spark SQL。他会从一个小项目入手,带你先熟悉开发 API ,再结合案例讲解 Spark SQL 的核心原理与优化过程,再重点介绍Spark SQL与数据分析有关的部分,如数据的转换、清洗、关联、分组、聚合、排序等等。

 

第三个模块是 Spark 机器学习子框架:Spark MLlib。他从“房价预测”这个项目入手,带你初步了解机器学习中的回归模型、及 Spark MLlib 的基本用法,同时深入学习 Spark MLlib 丰富的特征处理函数,和支持的模型与算法,并构建端到端的机器学习流水线。此外,他还会分享 Spark + XGBoost 集成,是如何帮助开发者应对大多数的回归与分类的问题。

 

第四个模版是 Spark 的流处理框架 Structured Streaming。他会重点讲解 Structured Streaming 如何同时保证语义与数据的一致性,以及如何应对流处理中的数据关联,并通过 Kafka + Spark 这对“Couple”的系统集成,演示流处理中的典型计算场景。

 

相信经过这四个部分的“洗礼”,你能很快建立属于自己的 Spark 知识体系,彻底跨进了 Spark 应用开发的大门,最终成功交付一个满足业务需求、运行稳定、且执行性能良好的分布式应用,并能对大部分的数据应用需求都灵活应对。

 

说了那么多,看看目录吧:

 

快速构建 Spark 核心知识体系_知识体系_05

 

磊哥的分享,最厉害的点就在于他的技术讲解非常通俗易懂,有种看武侠小说的感觉,即便我们面对的是一个全新的领域,也能在最短的时间内,做到零基础快速入门。

 

市面上关于 Spark 的课良莠不齐,像磊哥这样能带着你从 0 到 1 构建知识体系,甚至连源码都带逐句注释和讲解的,确实不多了。推荐给想要进入大数据领域或想对大数据基础查缺补漏的朋友,真的很值得一看。

 




标签:入门,知识,学习,构建,SQL,磊哥,Spark,数据
From: https://blog.51cto.com/u_15105906/5984128

相关文章

  • Hadoop知识简要
      1、HDFSHDFS是分布式文件系统-支持海量数据存储-由大量的计算机集群组成-可以运行再低成本的硬件之上-高容错性-高可靠性-高扩展性-高吞吐率适合大......
  • 第十五章《网络编程》第1节:网络基础知识
    ​随着互联网技术的不断发展,网络应用已经成了计算机应用领域中使用最为广泛的应用,而网络编程技术已经成为了当代Java开发者必须掌握的核心技术。学习网络编程技术,就必须先掌......
  • 史上最全的道闸控制板接线图、原理图干货知识,90%的弱电人都不知道!(附图文详解)
    道闸控制板接线图、原理图道闸是专门用于道路上限制机动车行驶的通道出入口管理设备。下面小编给大家介绍一下道闸主板原理图。道闸控制板根据操作指令控制电机进行正向......
  • 使用Apache Tiles3.x构建界面布局
     Tiles是一个免费的开源模板Java应用程序的框架。基于复合模式简化的用户界面的构建。对于复杂的网站仍是最简单、最优雅的方式与任何MVC技术一起工作。Struts2对Tiles提......
  • 力扣105 根据先序遍历以及中序遍历构建二叉树
    力扣105根据先序遍历以及中序遍历构建二叉树题目:给定两个整数数组preorder和inorder,其中preorder是二叉树的先序遍历,inorder是同一棵树的中序遍历,请构造二叉树......
  • JAVA-基础知识-2023-1-2
    “==”和equals()有什么区别呢?==:判断两个字符串在内存中首地址是否相同,即判断是否是同一个字符串对象equals():比较存储在两个字符串对象中的内容是否一致PS:字节......
  • Jenkins参数化构建
    在构建项目过程中,常常需要根据用户输入,传入一些参数,从而影响整个构建过程,此时就需要用到参数化构建了。下面演示将git库中分支参数化构建,简单理解就是在Jenkins中定义变量......
  • 【博学谷学习记录】超强总结,用心分享。spring框架一些重要知识点。
    1.1Spring的两大核心是什么?谈一谈你对IOC的理解?谈一谈你对DI的理解?谈一谈你对AOP的理解? 1.Spring的两大核心是:IOC(控制反转)和AOP(面向切面编程)DI(依赖注入)2.......
  • jQuery基础知识
    1、jqueryjQuery是一个javaScript第三方模块(第三方类库)。基于jQuery,自己开发一个功能。现成的工具依赖jQuery,例如bootstrap动态效果jQuery手册http://hemin.cn/jq/......
  • nerdctl buildkitd containerd构建容器镜像
    21.nerdctlbuildkitdcontainerd构建容器镜像21.1概述容器技术除了docker之外,还有coreOS的rkt、google的gvisor、以及docker开源的containerd、redhat的podman、阿里......