【Spark ML】第 2 章: Spark和Spark简介

  大家好,我是Sonhhxg_柒,希望你看完之后,能对你有所帮助,不足请指正!共同学习交流

个人主页-Sonhhxg_柒的博客_CSDN博客 

欢迎各位→点赞+ 收藏+ 留言/p>

系列专栏 – 机器学习【ML】 自然语言处理【NLP】  深度学习【DL】

【Spark ML】第 2 章: Spark和Spark简介/p>

 foreword

明人讲解主要包括Python、机器学习(ML)、深度学习(DL)、自然语言处理(NLP)等内容。

如果你对这个系列感兴趣的话,可以关注订阅哟

文章目录

概述

Cluster Managers(集群管理器)

Architecture(建筑)

执行Spark 应用程序

集群模式

客户端模式

spark-shell简介

SparkSession

Creating an RDD

并行化

textFile

Transformations(转换)

Map

FlatMap

Filter(滤波器)

Distinct

ReduceByKey

Keys

Values

Inner Join

RightOuterJoin and LeftOuterJoin

Union

Subtract(减去)

Coalesce(合并)

Repartition(重新分区)

Actions(行动)

Collect(收集)

Count(计数)

Take(拿)

Foreach(前期)

Lazy Evaluation

Caching(缓存)

Accumulator(蓄电池)

Broadcast Variable(广播变量)

Spark SQL、Dataset 和 DataFrames API

Spark 数据源

.CSV

.XML

JSON

关系数据库和 MPP 数据库

Parquet

HBase

Amazon S3

Solr

Microsoft Excel

Secure FTP(安全 FTP)

简介Spark MLlib

Spark MLlib算法

ML Pipelines

Pipeline

Transformer

Estimator

ParamGridBuilder

交叉验证器

Evaluator

特征提取、转换和选择

字符串索引器

Tokenizer(分词器)

VectorAssembler(矢量装配器)

StandardScaler(标准标定器)

StopWordsRemover(停止字切换)

n-gram

OneHotEncoderEstimator

SQLTransformer

主成分分析(PCA)

ChiSqSelector(奇思克选机)

Correlation(相关)

评估指标

Area Under the Receiver Operating Characteristic (AUROC)

F1 度量值

均方根误差(RMSE)

Model Persistence(模型持久性)

Spark MLlib示例

图形处理

超越Spark MLlib:第三方机器学习集成

使用Alluxio优化Spark和SparkMLlib

Architecture(建筑)

为什么使用Alluxio/p>

显著提高大数据处理性能和可扩展性

多个框架和应用程序可以以内存速度共享数据

降低硬件要求

Apache Spark 和 Alluxio

总结


Spark是一个统一的大数据处理框架,用于处理和分析大型数据集。Spark 在Scala, Python, Java, 和 R 中提供了高级 API,其中包含功能强大的库,包括用于机器学习的 MLlib、用于 SQL 支持的 Spark SQL、用于实时流的 Spark 流式处理和用于图形处理的 GraphX。第二Spark由Matei Zaharia在加州大学伯克利分校的AMPLab创立,后来捐赠给Apache软件基金会,于2014年2月24日成为顶级项目。第三第一个版本于2017年5月30日发布。

概述

《Spark》的开发是为了解决哈多普的原始数据处理框架MapReduce的局限性。Matei Zaharia看到了MapReduce在加州大学伯克利分校和Facebook(他在那里实习)的局限性,并试图创建一个更快,更通用,多用途的数据处理框架,可以处理迭代和交互式应用程序。在它提供了一个统一的平台(图 2-1),支持多种类型的工作负载,如流式处理、交互式、图形处理、机器学习和批处理。我们Spark 作业的运行速度比等效的 MapReduce 作业快许多倍,因为它具有快速的内存中功能和高级 DAG(有向无环图)执行引擎。Spark是用斯卡拉语编写的,因此它是Spark事实上的编程接口。我们将在本书中通篇使用 Scala。我们将在第7章中使用PySpark,即用于火花的Python API,用于分布式深度学习。

【Spark ML】第 2 章: Spark和Spark简介

 图 2-1Apache Spark ecosystem

Cluster Managers(集群管理器)

集群管理器管理和分配集群资源。Spark 支持随附于 Spark(独立调度程序)、YARN、Mesos 和 Kubernetes 附带的独立集群管理器。

Architecture(建筑)

在较高级别,Spark 将 Spark 应用程序任务的执行分布在群集节点上(图 2-2)。每个 Spark 应用程序在其驱动程序中都有一个 SparkContext 对象。SparkContext 表示与集群管理器的连接,集群管理器为 Spark 应用程序提供计算资源。连接到群集后,Spark 会获取工作线程节点上的执行程序。然后,Spark 将应用程序代码发送给执行程序。应用程序通常会运行一个或多个作业以响应 Spark 操作。然后,每个作业由 Spark 划分为阶段或任务的较小有向无环图 (DAG)。然后,每个任务将分发并发送到工作线程节点上的执行程序进行执行。

【Spark ML】第 2 章: Spark和Spark简介

图 2-2Apache Spark体系结构
每个 Spark 应用程序都有自己的一组执行程序。由于来自不同应用程序的任务在不同的 JVM 中运行,因此 Spark 应用程序不会干扰另一个 Spark 应用程序。这也意味着 Spark 应用程序很难在不使用外部数据源(如 HDFS 或 S3)的情况下共享数据。使用堆外内存存储(如Tachyon(又名Alluxio)可以使数据共享更快,更轻松。我将在本章后面更详细地讨论阿卢克西奥。

执行Spark 应用程序

您可以使用交互式外壳程序(火花外壳程序或 pyspark)或提交应用程序(火花提交)来执行 Spark 应用程序。有些人更喜欢使用基于Web的交互式笔记本,如阿帕奇齐柏林飞艇和朱皮特与Spark进行交互。数据砖和云端等商业供应商也提供自己的交互式笔记本环境。我将在整个章节中使用火花壳。有两种部署模式可用于在具有集群管理器(如 YARN)的环境中启动 Spark 应用程序。

集群模式

在群集模式下,驱动程序在由 YARN 管理的应用程序主服务器内运行。客户端可以在不影响应用程序执行的情况下退出。要在集群模式下启动应用程序或火花外壳:

客户端模式

在客户端模式下,驱动程序在客户端中运行。应用程序主服务器仅用于从 YARN 请求资源。要在客户端模式下启动应用程序或火花外壳,

spark-shell简介

通常使用交互式 shell 进行即席数据分析或浏览。它也是学习火花 API 的好工具。火花的交互式外壳在 Spark或Python中可用。在以下示例中,我们将创建城市的 RDD,并将它们全部转换为大写。当您启动火花外壳时,将自动创建一个名为“spark”的 SparkSession,如清单 2-1 所示。

Listing 2-1Introduction to spark-shell

SparkSession

如图 2-2 所示,SparkContext 支持访问所有 Spark 特性和功能。该驱动程序使用 SparkContext 访问其他上下文,如流式处理上下文、SQL 上下文和配置项上下文。从 Spark 2.0 开始,火花会话提供了一个与 Spark 交互的单一入口点。通过 Spark1.x 中的 Spark 上下文、SQL 上下文、配置上下文和流式处理上下文提供的所有功能现在都可以通过 SparkSession 进行访问。七您可能仍然会遇到在 Spark 1.x 中编写的代码。在 Spark 1.x 中,你会写出这样的东西。

在 Spark 2.x 中,您不必显式创建火花组件、SparkContext 或 SQLContext,因为它们的所有功能都已包含在 SparkSession 中。

弹性分布式数据集 (RDD)

RDD 是跨群集中的一个或多个节点分区的对象的弹性不可变分布式集合。RDD 可以通过两种类型的操作并行处理和操作:转换和操作。

注意RDD 是 Spark 1.x 中 Spark 的主要编程接口,数据集已取代 RDD 成为从 Spark 2.0 开始的主 API。建议用户从RDD切换到数据集/数据帧,因为编程接口更丰富,性能更好。我将在本章的后面部分讨论数据集和数据帧。

Creating an RDD

创建 RDD 非常简单。您可以从现有的 Scala 集合或通过读取存储在 HDFS 或 S3 中的外部文件来创建 RDD。

并行化

并行化从Scala集合创建 RDD。

textFile

文本文件从存储在 HDFS 或 S3 中的文本文件创建 RDD。

请注意,RDD 是不可变的。数据转换会生成另一个 RDD,而不是修改当前的 RDD。RDD操作可分为两类:转换和操作。

Transformations(转换)

转换是创建新的 RDD 的操作。我描述了一些最常见的转换。有关完整列表,请参阅联机 Spark 文档。

Map

映射对 RDD 中的每个元素执行一个函数。它将创建并返回结果的新 RDD。地图的返回类型不一定必须与原始 RDD 的类型相同。

让我们展示另一个地图示例。

res2: Array[Array[String]] = Array(Array(Michael, Jordan), Array(iPhone)) 

FlatMap

平面映射对 RDD

来源:Sonhhxg_柒

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2022年9月20日
下一篇 2022年9月20日

相关推荐