spark编程指南pdf中文版完整免费版|百度网盘下载
编者注:spark编程指南pdf中文版
Spark 是一个类似于 Hadoop MapReduce 的通用并行框架,由 UC Berkeley AMP 实验室(加州大学伯克利分校的 AMP 实验室)开源。从高层的角度来看,每个 Spark 应用程序都包含一个驱动程序,用于执行用户主函数并在集群上运行各种并行操作
相关内容部分预览
书籍介绍
Spark是加州大学伯克利分校AMP实验室(AMP Lab of California, Berkeley)开源的类似Hadoop MapReduce的通用并行框架,Spark具有Hadoop MapReduce的优点;但与 MapReduce 不同的是 Job 的中间输出结果可以存储在内存中,
因此,不再需要读写HDFS,因此Spark可以更好地应用于需要迭代的MapReduce算法,例如数据挖掘和机器学习。
Spark 是一个类似于 Hadoop 的开源集群计算环境,但两者之间存在一些差异,这使得 Spark 在某些工作负载上表现出色,换句话说,Spark 支持内存中的分布式数据集,除了能够提供交互式查询,还可以针对迭代工作负载进行优化。
Spark 是用 Scala 语言实现的,它使用 Scala 作为其应用程序框架。与 Hadoop 不同,Spark 和 Scala 紧密集成,Scala 可以像操作原生集合对象一样轻松地操作分布式数据集。
虽然创建 Spark 是为了支持分布式数据集上的迭代作业,但它实际上是对 Hadoop 的补充,可以在 Hadoop 文件系统上并行运行。通过名为 Mesos 的第三方集群框架支持此行为。
Spark 由 UC Berkeley 的 AMP 实验室(算法、机器和人员实验室)开发,用于构建大规模、低延迟的数据分析应用程序。
如何连接到 Spark
Spark 1.3.0 仅支持 Python 2.6 或更高版本(但不支持 Python 3)。它使用标准的 CPython 解释器,因此也可以使用 NumPy 等 C 库。
您可以通过 Spark 目录中的 bin/spark-submit 脚本在 Python 中运行 Spark 应用程序。此脚本加载 Spark 的 Java/Scala 库,并允许您将应用程序提交到集群。你可以执行 bin/pyspark 来打开 Python 的交互式命令行。
如果您希望访问 HDFS 上的数据,则需要为您正在使用的 HDFS 版本建立 PySpark 连接。此第三方分发页面上列出了常见的 HDFS 版本标签。
最后,您需要将一些 Spark 类导入您的程序。添加以下行:
从 pyspark 导入 SparkContext,SparkConf
什么是火花
一般来说,每个 Spark 应用程序。两者都包含一个驱动程序。它执行用户的主要功能,在集群上执行各种并行操作。
Spark 提出的主要抽象是弹性分布式数据集 (RDD)。它是元素的集合,在集群的节点之间划分,可以并行操作。
RDD 可以从 HDFS(或任何其他支持 Hadoop 的文件系统)上的文件创建,也可以通过在驱动程序中转换现有的 Scala 集合来创建。
用户还可以指示 Spark 将 RDD 保留在内存中,以便在并行操作中有效地重用它。最后,RDD 可以主动从节点故障中恢复。 Spark的第二个抽象是共享变量,
可用于并行操作。默认情况下,Spark 通过不同节点上的一系列任务执行一个函数,将每个函数中使用的变量的副本传递给每个任务。有时,任务之间需要有一个变量,
或在任务和驱动程序之间共享。 Spark支持两种共享变量:广播变量,可以在内存中的所有节点缓存变量;累加器:只能用于加法的变量。比如数数或求和。
本指南将以 Spark 支持的每种语言演示这些功能。假设您启动 Spark 的交互式 shell 或 Scala 的 bin/spark-shell 或 Python 的 bin/pyspark,这一切都非常容易理解。
如何初始化 Spark
Scala Spark 程序需要做的第一件事是创建一个 SparkContext 对象。它将告诉 Spark 如何询问集群。要创建 SparkContext,您首先需要创建一个 SparkConf 对象,
此对象包含有关您的程序的信息。每个 JVM 只能有一个活动的 SparkContext。在创建新的 SparkContext 之前,您必须 stop() 活动的 SparkContext。
val conf = newSparkConf().setAppName(appName).setMaster(master) new SparkContext(conf) appName 是您的应用程序的名称。将显示在集群的 Web 监控 UI 中。
master...
在实践中,在集群上执行时,您不想将 master 硬编码到程序中,而是启动 spark-submit 来接收它。然而。用于本地和单元测试。你可以通过“本地”
Mode 执行 Spark。 Java Spark 程序需要做的第一件事是创建一个 JavaSparkContext 对象,它会告诉 Spark 如何询问集群。
要创建 SparkContext,您首先需要创建一个 SparkConf 对象,其中包含有关您的程序的信息。 SparkConf conf = new SparkConf().setAppName(appName).setMaster(master);
JavaSparkContext sc = newJavaSparkContext(conf); appName 是您的应用程序的名称。将显示在集群的 Web 监控 UI 中。 master�⑹�,是一个字符串,指定连接的 Spark、Mesos 或 Mesos 集群的 URL,
也可以是一个特殊的字符串“local”,用于在本地模式下执行,如下所述。在实践中,在集群上执行时,您不想将 master 硬编码到程序中,而是启动 spark-submit 来接收它。
但是。用于本地和单元测试。您可以在“本地”模式下执行 Spark。 Python Spark 程序需要做的第一件事是创建一个 JavaSparkContext 对象。它将告诉 Spark 如何询问集群。
要创建 SparkContext,您首先需要创建一个 SparkConf 对象,其中包含有关您的程序的信息。 conf =SparkConf().setAppName(appName).setMaster(master) sc = SparkContext(conf=conf) appName 是你应用的名字,
将显示在集群的 Web 监控 UI 中。 master�⑹�,是一个字符串,指定连接的 Spark、Mesos 或 Mesos 集群的 URL,或者是一个特殊的字符串“local”,如下所述,用于在本地模式下执行。
在实践中。在集群上执行时,您不想将 master 硬编码到程序中,而是启动 spark-submit 来接收它。但是,对于本地和单元测试。您可以在“本地”模式下执行 Spark。