Spark 初识

news2024/11/20 6:14:18

文章目录

    • Spark 初识
      • Spark是什么
      • Apache Spark演变
      • 为什么使用Spark
      • Spark组件
        • Spark Core
        • Spark SQL
        • Spark Streaming
        • Spark MLlib
        • Spark GraphX
        • SparkR
        • pySpark
      • spark 在数仓的应用
    • 总结

Spark 初识

从今天开始我们进入数据仓库的查询引擎篇了,前面我们已经写了大量的文章介绍Hive,具体你可以看hive 的专栏,而且关于工具这一块我们的重点就在hive 上,后面关于spark、presto、impala、clickHouse的介绍都不会像前面这样细了,因为我们的重点是在数仓建设的方法论上面,而不是工具上面。

image-20211022151739795

Spark是什么

Spark 是一种高效且多用途的集群计算平台。换句话说,Spark 是一种开源的,大规模数据处理引擎。它提供了一整套开发 API,包括流计算、机器学习或者SQL。Spark 支持批处理和流处理。批处理指的是对大规模数据一批一批的计算,计算时间较长,而流处理则是一条数据一条数据的处理,处理速度可达到秒级。

Spark 集成了许多大数据工具,例如 Spark 可以处理任何 Hadoop 数据源,也能在 Hadoop 集群上执行。大数据业内有个共识认为,Spark 只是Hadoop MapReduce 的扩展(事实并非如此),如Hadoop MapReduce 中没有的迭代查询和流处理。然而Spark并不需要依赖于 Hadoop,它有自己的集群管理系统。更重要的是,同样数据量,同样集群配置,Spark 的数据处理速度要比 Hadoop MapReduce 快10倍左右,这主要是因为spark 强大的设计和对计算的优化。

Spark 的一个关键的特性是数据可以在内存中迭代计算,提高数据处理的速度。虽然Spark是用 Scala开发的,但是它对 Java、Scala、Python 和 R 等高级编程语言提供了开发接口。

Apache Spark演变

2009年,Spark 诞生于伯克利大学的AMPLab实验室。最初 Spark 只是一个实验性的项目,代码量非常少,属于轻量级的框架。

2010年,伯克利大学正式开源了 Spark 项目。
2013年,Spark 成为了 Apache 基金会下的项目,进入高速发展期。第三方开发者贡献了大量的代码,活跃度非常高。
2014年,Spark 以飞快的速度称为了 Apache 的顶级项目。
2015年至今,Spark 在国内IT行业变得愈发火爆,大量的公司开始重点部署或者使用 Spark 来替代MapReduce、Hive、Storm 等传统的大数据计算框架。

为什么使用Spark

Spark 诞生之前,在大数据处理领域,并没有一个通用的计算引擎。

离线批处理使用 Hadoop MapReduce

流处理需要使用 Apache Storm
即时查询使用 Impala 或者 Tez
执行图计算使用 Neo4j 或者 Apache Giraph
而Spark囊括了离线批处理、流处理、即时查询和图计算4大功能。

早期我们任务spark 是MR 替代品,这是因为MR 对数据集的处理并不高效,这主要体现在迭代算法和交互式查询,这两种场景下,如果能将数据保存到内存中都将极大的提高效率,从而避免每次都需要从HDFS 上将数据读取出来。

全,指的是 Spark 在计算场景的支持上非常全面。我们知道,在数据应用领域,有如下几类计算场景,它们分别是批处理、流计算、数据分析、机器学习和图计算。

批处理作为大数据的基础,自然不必多说了。与以往任何时候都不同,今天的大数据处理,对于延迟性的要求越来越高,流处理的基本概念与工作原理,是每一个大数据从业者必备的“技能点”。而在人工智能火热的当下,数据分析与机器学习也是我们必须要关注的重中之重。

对于这几类计算场景,Spark 提供了丰富的子框架予以支持。比如,针对流计算的 Structured Streaming,用于数据分析的 Spark SQL,服务于机器学习的 Spark MLlib,等等。Spark 全方位的场景支持,让开发者、在同一套计算框架之内,即可实现不同类型的数据应用,从而避免为了实现不同类型的数据应用,而疲于奔命地追逐各式各样的新技术、新框架。

快,有两个方面,一个是开发效率快,另一个是执行效率快。

Spark 支持多种开发语言,如 Python、Java、Scala、R 和 SQL,同时提供了种类丰富的开发算子,如 RDD、DataFrame、Dataset。这些特性让开发者能够像搭积木一样,信手拈来、驾轻就熟地完成数据应用开发。你可以类比开发MR 程序。

第二个就是凭借 Spark Core 和 Spark SQL 这两个并驾齐驱的计算引擎,我们开发出的数据应用并不需要太多的调整或是优化,就能享有不错的执行性能,而这,主要得益于 Spark 社区对于底层计算引擎的持续打磨与优化,才让开发者能够把精力专注于业务逻辑实现,而不必关心框架层面的设计细节。

Spark组件

Spark提供了6大组件:

  • Spark Core
  • Spark SQL
  • Spark Streaming
  • Spark MLlib
  • Spark GraphX
  • SparkR

Spark Core

将分布式数据抽象为弹性分布式数据集(RDD),实现了应用任务调度、RPC、序列化和压缩,并为运行在其上的上层组件提供API。所有Spark的上层组件(如:Spark SQL、Spark Streaming、MLlib、GraphX)都建立在Spark Core的基础之上,它提供了内存计算的能力,因此,Spark Core是分布式处理大数据集的基础。

Spark SQL

Spark Sql 是Spark来操作结构化数据的程序包,可以让我使用SQL语句的方式来查询数据,Spark支持 多种数据源,包含 Hive 表,parquest以及JSON等内容。

Spark Streaming

除了处理动态数据流,Spark Streaming 还能开发出强大的交互和数据查询程序。事实上,在处理动态数据流时,流数据会被分割成微小的批处理,这些微小批处理将会在Spark Core上按时间一个一个执行,且速度非常快。

Spark MLlib

Spark MLlib 封装了很多高效的机器学习算法。它是数据科学最热门的选择,因为它是在内存处理数据的,非常有效的提高数据迭代算法的性能。

Spark GraphX

Spark GraphX一个建立在Spark之上大规模处理图数据的计算引擎。

SparkR

SparkR 是一个 R 语言包,它提供了轻量级的方式使得可以在 R 语言中使用 Apache Spark。在Spark 1.4中,SparkR 实现了分布式的 data frame,支持类似查询、过滤以及聚合的操作(类似于R中的data frames:dplyr),但是这个可以操作大规模的数据集。

pySpark

是spark 提供的python 的api,而且最新的spark 将引入pandas 的api ,这算是对数据工作者的又一大福音。

spark 在数仓的应用

因为我们的课程是针对数仓的,所以我们这里介绍一下spark 在数仓里的应用,这主要是我们将spark作为一个高性能的查询引擎来使用,也就是说我们ETL 的工作可以使用spark 完成,但是这里的意思不是事说我们就不需要Hive 了,因为我们的数仓表涉及到大量的元数据,而spark 需要操作这些表就需要这些元数据,所以说在数仓里面我们的spark还是依赖Hive 的元数据的。

这里需要说明一下,spark本身事可以单独使用的,不需要依赖Hadoop,不需要依赖Hive,但是因为我们需要操作Hive 的表,所以依赖Hive,还有一点就是我们的Hive现在支持多种查询引擎,默认的就是MR,也就是我们俗称的Hive on MR,初次之外我们的Hive 还支持 TEZ 和 Spark 引擎。

数仓里使用Spark ,一般指的是使用Spark 的批计算,主要就是Spark-SQL, 这里我们强调的是主要,如果你学习了我们前面的文章的话,就知道我现在所在的公司里还是用到了Spark的Grap以及Spark 的其他的组件。

总结

Spark 作为一个批流一体的的计算引擎,虽然流计算上存在一定的缺陷,但是在当时的技术背景下它具有颠覆性的意义。

Spark凭借其完整的技术栈和强悍的性能在众多互联网公司中赢得了一席之地。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/72017.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

三分钟了解LAP编程框架

针对Java开发者的灵魂拷问: 1、梳理的流程,关键逻辑是否有遗漏,理解一致吗? 2、设计时,如何更方便的与产品沟通?原有的设计是否有不合理的?绘制的流程图大家都能理解吗? 3、测试时&a…

316页11万字AI赋能智慧水利大数据信息化平台建设和运营解决方案

第一章 系统综述 1.1 项目背景 1.2 系统概述 1.3 需求分析 1.3.1 中心管控需求 1.3.2 前端监测需求 1.4 建设目标 1.5 设计原则 1.6 设计依据 第二章 系统总体设计 2.1 总体设计思路 2.2 架构设计 2.2.1 逻辑架构 2.2.2 系统架构 2.3 关键技术应用 2.4 系统特色…

代码随想录刷题|LeetCode 647. 回文子串 516.最长回文子序列

647. 回文子串 题目链接:https://leetcode.cn/problems/palindromic-substrings/ 思路 动态规划思路 1、确定dp数组 布尔类型的dp[i][j]:表示区间范围[i,j] (注意是左闭右闭)的子串是否是回文子串,如果是dp[i][j]为tr…

【真的?】用 ChatGPT 写一篇 Python 翻译库博客,可以打 9 分

今天来个大的实践项目,用 ChatGPT 写一篇博客,冲击一下热榜! 从零开始玩 ChatGPT⛳️ ChatGPT 亮点⛳️ 账号篇⛳️ 第一次使用⛳️ 用 Python 实现一个英汉互译的小程序⛳️ googletrans 库核心用法⛳️ 再补充一些知识点⛳️ googletrans 和…

功率放大电路和电压放大电路的区别是什么意思

功率放大电路和电压放大电路都属于模拟电路,是工程师日常经常用到的比较常见的模拟电路,很多小白工程师对于功率放大电路和电压放大电路的区别都很好奇,下面就来看看区别有哪些。 图:功率放大电路与电压放大电路对比 1、功能和基本…

docker之网络配置

目录一、网络模式1.bridge模式(默认模式)2.host模式3.初识网络模式二、bridge模式三、host模式四、自定义网络一、网络模式 Docker在创建容器时有四种网络模式:bridge/host/container/none,bridge为默认不需要用–net去指定,其他三种模式需要…

微服务框架 SpringCloud微服务架构 19 文档操作 19.2 修改文档

微服务框架 【SpringCloudRabbitMQDockerRedis搜索分布式,系统详解springcloud微服务技术栈课程|黑马程序员Java微服务】 SpringCloud微服务架构 文章目录微服务框架SpringCloud微服务架构19 文档操作19.2 修改文档19.2.1 修改文档19.2.2 总结19 文档操作 19.2 修…

推荐一款超级好用的工具:uTools详解使用

介绍 uTools 是什么?下载并安装uTools 能做什么?一切皆插件超级面板 uTools 是什么? uTools 是一个极简、插件化、跨平台的现代桌面软件。通过自由选配丰富的插件,打造你得心应手的工具集合。 通过快捷键(默认 alt…

红队隧道应用篇之CS正反向连接突破内网(二)

正向连接 环境拓扑图 操作步骤 在CS客户端新建一个TCP协议的监听, 监听端口为4444 创建无状态木马(Windows Executable(S)), 选择上述建立的TCP监听器, 随后将无状态木马放到不出网的内网主机中去运行, 运行后内网主机就会监听本机的4444端口 在web服务器的beacon命令行输入:…

EMQX安装与使用

EMQX文档:https://www.emqx.io/docs/zh/v5.0/ 1.安装 https://www.emqx.io/zh/downloads 找到自己合适的平台和版本安装 ①:后台启动 emqx start启动成功后可以使用 emqx ping 命令检测节点运行状态,返回 pong 则表示正常运行: …

pmp 证书到底有什么用处?

PMP 证书最重要的两个用处:一个是岗位招聘要求,一个是项目招标要求。 一、PMP证书的应用 1、PMP 证书的敲门砖作用 前面说的,PMP 作为项目管理领域的一个权威公认证书,很多行业要求项目管理岗位人才都会加一条"具备PMP 等证…

Redis vs MongoDB

Redis vs MongoDB 通常情况下,应用系统的技术选型,对于如何选择非关系型数据库,是一个不小的挑战。这不仅考验架构师在技术上的广度和深度,同时也考究对业务细节了解和熟悉程度。只有将业务场景、业务特点、数据特征跟具体的技术…

数据挖掘与机器学习课程总结

2022.11月 文章目录一、引言1.1 数据中的知识发现包括哪几个步骤?(Knowledge Discovery from Data, KDD)1.2 数据挖掘应用二、学习的可行性2.1 Hoeffding 不等式(Hoeffding’s Inequality)2.2 用 Hoeffding 不等式说明学习的可行性三、数据和…

浅学Linux内核MMU

1 MMU基本知识 1.1 什么是MMU MMU是 MemoryManagementUnit 的缩写即,内存管理单元. 针对各种CPU, MMU是个可选的配件. MMU负责的是虚拟地址与物理地址的转换. 提供硬件机制的内存访问授权.(现代 CPU 的应用中,基本上都选择了使用 MMU&#…

【Paper】2021_具有输入饱和的多智能体系统非负连边比例一致性研究_范志鹏

范志鹏. 具有输入饱和的多智能体系统非负连边比例一致性研究[D].华中科技大学,2021.DOI:10.27157/d.cnki.ghzku.2021.001324. 文章目录3 基于状态反馈的线性离散正系统连边比例一致性控制3.1 引言3.2 基于状态反馈的离散时间连边比例一致性的问题描述3.3 无向网络离散时间连边比…

JavaScript中的localStorage

JavaScript中的localStorage 参考这篇文章一起学习:JavaScript中的session 案例池子: JS实现鼠标悬停变色 JavaScript中的排他算法实现按钮单选 JavaScript中的localStorage JavaScript中的sessionStorage JavaScript实现网页关灯效果 JavaScript实…

Codeforces Round #836 (Div. 2) D. Range = √Sum

翻译: 给你一个整数𝑛。找到一个由𝑛不同整数组成的序列𝑎1,𝑎2,…,𝑎𝑛,使得对于所有𝑖和 马克斯(𝑎1𝑎2,……

Qt-数据库开发-QTableView操作数据库(1)

Qt-数据库开发-QTableView操作数据库 文章目录Qt-数据库开发-QTableView操作数据库1、概述2、实现效果3、主要代码4、完整源代码更多精彩内容👉个人内容分类汇总 👈👉数据库开发 👈 1、概述 这是通过学习Qt官方Demo产生的一个示例…

【爬虫5年保更新专栏】异步协程典型案例,一篇掌握~

最近收到 C 友反馈,说 《听说过 python 协程没?听说过 asyncio 库没?都在这一篇博客了》 这篇博客的目标图片站,已经不能使用了,橡皮擦查阅之后,发现是对方网站已经不运营了,所以更新一下案例。…

SessionJSPCookie

今日内容 会话技术。会话技术包括两个: CookieSession JSP的入门学习:JSP也是一种服务器的动态资源,servlet也是一种服务器的动态资源。 会话技术 会话:一次会话中包含多次请求和响应。一次会话就像是人与人的一次见面聊天&…