Spark编程基础考点

第一章、大数据技术概述

大数据处理的基本流程

  • 数据采集与预处理:利用ETL(Extraction Transformation Loading)工具将分布、异构数据源中的数据抽取到临时中间层后进行清洗、转换、集成,最后加载到数据仓库或数据集市中,成为联机分析处理、数据挖掘的基础。

  • 数据存储和管理:利用分布式文件系统、数据仓库等实现对结构化、半结构化和非结构化海量数据的存储和管理。

  • 数据处理和分析:利用分布式并行编程模型计算框架,结合机器学习和数据挖掘算法,实现对海量数据的处理和分析。
  • 数据可视化(结果呈现):对分析结果进行可视化呈现,帮助人们更好理解数据、分析数据。

    Hadoop生态系统的各个组件功能

  • HDFS分布式文件系统:提供在廉价 服务器集群 中进行大规模 分布式文件存储 的能力,数据分布在若干个数据节点上,使得一个文件的数据能够被 并发访问。
    • 名称节点(中心服务器):管理文件系统的命名空间及客户端对文件的访问。
    • 数据节点:一个节点负责一个数据节点进程,处理文件系统客服端的读/写请求,并在名称节点的统一调度下进行数据块的创建、删除和复制操作。
  • MapReduce:分布式并行编程模型。用于大规模数据集(大于1TB)的并行运算,将并行计算高度抽象为MapReduce,最终写入分布式文件系统。
  • YARN:负责集群资源的管理和调度。目标为实现“一个集群多个框架”,即在一个集群上部署一个统一的资源调度管理框架YARN,并在YARN上部署其他计算框架如MapReduce、Spark等,根据他们的负载需求调整如CPU、内存等资源。
  • HBase分布式数据库:分布式数据库。存储非结构化和半结构化的松散数据。
  • Hive:基于Hadoop的数据仓库工具。对存储在Hadoop中的数据集进行整理、特殊查询和分析处理。
  • Flume:分布式海量日志采集、聚合和传输系统。
  • Sqoop:SQL-to-Hadoop,在Hadoop和关系数据库之间交换数据。

    Hadoop和Spark的对比

  • Hadoop中的MapReduce的缺点

    • 表达能力有限:计算必须转化为Map和Reduce操作。
    • 磁盘I/O开销过高:每次执行都要将数据从磁盘中读取,并写回磁盘。
    • 延迟高:一次计算分解成一系列顺序执行的Map和Reduce,且任务之间的衔接设计I/O开销,会产生高延迟。
    • 难以适用于多种应用场景:难以适应机器学习、流处理或者交互式SQL查询。
  • Spark的优点

    • 灵活:计算框架类似于MapReduce,但不局限于Map和Reduce,提供多种数据集操作类型。
    • 内存计算:中间结果放在内存,迭代运算效率更高。
    • 基于DAG的任务调度执行机制
    • 多种组件:一站式支持批处理、流处理、查询分析、图计算、机器学习等。

第二章 Scala语言基础

Scala语言基本特性

  • Scala运行于JVM上:兼容现有Java程序,可与java类互操作。
  • 面向对象:每个值都是对象,每个操作都是方法调用。
  • 函数式:每个函数都是一个对象,和其他类型的值同一地位。Scala提供轻量级语法 定义匿名函数,支持高阶函数,允许嵌套多层函数,支持函数柯里化。

Scala中的两种构造器

  • 主构造器:类的定义主体,所有位于类方法以外的语句都将在构造过程中被执行。
  • 辅助构造器:用this进行定义,this的返回类型为Unit,第一个表达式调用此前已经定义的辅助构造器或主构造器。

Scala的词频统计实现思路

  1. 通过textFile读取数据
  2. flatMap将字符串切分成单词
  3. map将单词转换为(单词,1)的形式
  4. reduceByKey将同一个单词的所有值相加
  5. filter将单词计数大于3的结果过滤出来
  6. saveAsTextFile将结果写入HDFS

第三章 Spark的设计与运行原理

Spark的主要特点

  • 运行速度快:使用DAG执行引擎,支持循环数据流与内存计算。
  • 容易使用:支持Scala、Java、Python和R语言进行编程,通过spark-shell进行交互式编程。
  • 通用性:提供完整而强大的技术栈,包括SQL查询、流式计算、机器学习和图计算。
  • 模块化:提供sparkCore、SparkSQL、SparkStreaming等模块,可将不同场景的工作负载整合在一起在一个引擎上执行。
  • 运行模式多样:可以独立运行与集群模式中、Hadoop中,也可以运行在云环境中。
  • 支持各种数据源:由于spark的重心在分布式计算,可以读取包括HDFS、HBase、Hive等以及高级数据源Kafka等。

Spark的生态系统

遵循一个软件栈满足不同应用场景的理念,所提供的生态系统足以支持批处理、交互式查询、流数据处理三种应用场景。

  • sparkCore:包含Spark最基础、最核心的功能,如内存计算、任务调度、故障恢复、部署模式、存储管理等。
  • SparkSQL:结构化数据处理组件
  • SparkStreaming:流计算框架
  • MLlib:机器学习算法实现
  • GraphX:用于图计算

Spark主要概念

  • RDD:弹性分布式数据集。提供一种高度受限的共享内存,实际数据被分成多个分区,存储在一批机器上。
  • DAG:有向无环图,反映RDD之间的依赖关系。
  • 阶段(stage):作业调度的基本单位,表示可以并行处理的一组任务。一个作业会分为多组阶段,Spark中以shuffle和Result进行划分。
  • 任务:Executor上的工作单元,每个阶段会有多个任务。
  • 分区:Spark中最小的并行处理单元。RDD的最小计算单元,分区的数量和大小影响并行计算的粒度和效率。
  • 窄依赖:每个父RDD的分区最多智能对应一个子RDD的分区,典型操作包括map、filter、union等。
  • 宽依赖:一个父RDD的分区可以对应一个子RDD的多个分区,通常会包含shuffle操作,对输入进行非协同划分。典型操作包括groupByKey、sortByKey
  • shuffle:将数据重新分配到不同的节点上。

Action和Transformation的区别

  • Action:将RDD存储到硬盘或触发转化执行,进行运算。
  • Transformation:把原数据加载到RDD或把一个RDD转换为另一个RDD,不进行计算。

Spark运行基本流程

Spark运行基本流程_spark运行的基本流程-CSDN博客


第四章 Spark环境搭建和使用方法

Spark的五种部署模式

  • Local模式:单机模式
  • standalone模式
  • spark on YARN模式
  • spark on Mesos模式
  • spark on kubernetes模式

Spark独立应用程序的基本步骤

  1. 安装编译打包工具:sbt、Maven
  2. 编写Spark应用程序代码
  3. 编译打包
  4. 通过spark-submit运行程序

Spark集群环境搭建的基本过程

  1. 搭建Hadoop集群
  2. 在集群中安装Spark
  3. 配置环境变量
  4. Spark的配置
  5. 启动Spark的集群
  6. 关闭Spark的集群

第六章 SparkSQL

RDD和DataFrame的区别

  • RDD 是分布式的 Java 对象的集合
  • DataFrame 则是分布式的 Row 对象的集合
  • DataFrame 除了提供了比 RDD 更丰富的算子操作以外,更重要的特点是利用已知的结构信息来提升执行效率、减少数据读取以及执行计划的优化。


从RDD到DataFrame的转换

  • 使用反射获取RDD内的Schema:适用于已知数据结构的RDD转换
  • 通过编程接口指定Schema
  1. 制作表头schema,structType和stryctField类表示模式信息,包含字段名称,类型等
  2. 制作表中的记录:每条记录封装到Row对象中,最终保存到一个RDD中
  3. 将表头和表中记录拼装在一起,得到一个DataFrame。

第七章 SparkStreaming

批量计算和实时计算的区别

批量计算是对大量数据进行离线处理,通常用于大规模数据集的深入分析和挖掘。适用于静态数据。在充裕时间内获取有价值的信息,如Hadoop

实时计算强调对实时数据进行快速响应。针对流数据(快速到达、来源众多、量大、注重整体价值、顺序颠倒)


流计算系统功能上的需求

  • 高性能:处理大数据的基本要求,如每秒几十万条
  • 海量式:TB或者PB
  • 实时性:延迟时间较低
  • 分布式:大数据基本架构,能平滑扩展
  • 易用性:快速开发和部署
  • 可靠性:可靠的处理流数据

流计算的基本处理框架

  1. 数据实时采集:多个数据源、保证实时性、低延迟与稳定可靠。有agent、collector、store三个部分
  2. 数据实时计算:对数据进行分析和计算,可视情况储存或丢弃
  3. 实时查询服务:主动将实时结果推送给用户

SparkStreaming工作机制

组件Receiver作为一个长期运行的任务(Task)运行在一个Executor上,每个Receiver都会负责一个Dstream输入流。Receiver组件接收到数据源发来的数据后,会提交给SparkStreaming程序进行处理,处理后的结果可由可视化组件进行展示,或者写入HDFS、HBase中。


SparkStreaming程序编写的基本步骤

  1. 创建输入Dstream来定义输入源,输入源发送数据给SparkStreaming由receiver接受,并有自定义的SparkStreaming处理
  2. 对Dstream应用转换和输出操作定义流数据,调用各种Dstream操作实现用户处理逻辑
  3. StreamingContext对象的start()方法开始接收数据和处理流程
  4. 调用StreamingContext对象的awaitTermination()方法等待流计算进程结束,或者stop()方法手动结束流程。

第八章 SparkMLlib

流水线的几个部件和主要作用

  • Pipeline:将多个Transfomer和Estimator连接在一起构成一个机器学习工作流。
  • Transformer转换器:实现了transform()方法,该方法可以将一个DataFrame转换为另一个DataFrame。
  • Estimator评估其:实现了fit()方法,所以只要输入是DataFrame,然后产生一个模型。

流水线构建机器学习工作流有什么好处

  • 简化流程
  • 方便调试和优化
  • 支持数据预处理和模型训练的一体化
  • 易于扩展和复用
  • 21
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值