提交 08406520 编写于 作者: 取昵称好难啊's avatar 取昵称好难啊

", " to ","

上级 5c8e6e45
......@@ -2,7 +2,7 @@
![](docs/img/spark-logo-hd.png)
Apache Spark? 是一个快速的, 用于海量数据处理的通用引擎.
Apache Spark? 是一个快速的用于海量数据处理的通用引擎.
## 维护地址
......@@ -45,7 +45,7 @@ Apache Spark? 是一个快速的, 用于海量数据处理的通用引擎.
## 联系方式
有任何建议反馈, 或想参与文档翻译, 麻烦联系下面的企鹅:
有任何建议反馈,或想参与文档翻译,麻烦联系下面的企鹅:
* 企鹅: 1042658081
......
# Spark 概述
Apache Spark 是一个快速的, 多用途的集群计算系统。它提供了 Java, Scala, Python 和 R 的高级 API,以及一个支持通用的执行图计算的优化过的引擎. 它还支持一组丰富的高级工具, 包括使用 SQL 处理结构化数据处理的 [Spark SQL](sql-programming-guide.html), 用于机器学习的 [MLlib](ml-guide.html), 用于图计算的 [GraphX](graphx-programming-guide.html), 以及 [Spark Streaming](streaming-programming-guide.html)
Apache Spark 是一个快速的,多用途的集群计算系统。它提供了 Java,Scala,Python 和 R 的高级 API,以及一个支持通用的执行图计算的优化过的引擎. 它还支持一组丰富的高级工具,包括使用 SQL 处理结构化数据处理的 [Spark SQL](sql-programming-guide.html),用于机器学习的 [MLlib](ml-guide.html),用于图计算的 [GraphX](graphx-programming-guide.html)以及 [Spark Streaming](streaming-programming-guide.html)
# 下载
从该项目官网的 [下载页面](http://spark.apache.org/downloads.html) 获取 Spark. 该文档用于 Spark 2.2.0 版本. Spark可以通过Hadoop client库使用HDFS和YARN.下载一个预编译主流Hadoop版本比较麻烦. 用户可以下载一个编译好的Hadoop版本, 并且可以 通过[设置 Spark 的 classpath](hadoop-provided.html) 来与任何的 Hadoop 版本一起运行 Spark. Scala 和 Java 用户可以在他们的工程中通过Maven的方式引入 Spark, 并且在将来 Python 用户也可以从 PyPI 中安装 Spark。
从该项目官网的 [下载页面](http://spark.apache.org/downloads.html) 获取 Spark. 该文档用于 Spark 2.2.0 版本. Spark可以通过Hadoop client库使用HDFS和YARN.下载一个预编译主流Hadoop版本比较麻烦. 用户可以下载一个编译好的Hadoop版本,并且可以 通过[设置 Spark 的 classpath](hadoop-provided.html) 来与任何的 Hadoop 版本一起运行 Spark. Scala 和 Java 用户可以在他们的工程中通过Maven的方式引入 Spark,并且在将来 Python 用户也可以从 PyPI 中安装 Spark。
如果您希望从源码中编译一个Spark, 请访问 [编译 Spark](building-spark.html).
如果您希望从源码中编译一个Spark请访问 [编译 Spark](building-spark.html).
Spark可以在windows和unix类似的系统(例如, Linux, Mac OS)上运行。它可以很容易的在一台本地机器上运行 -你只需要安装一个JAVA环境并配置PATH环境变量,或者让JAVA_HOME指向你的JAVA安装路径
Spark可以在windows和unix类似的系统(例如,Linux,Mac OS)上运行。它可以很容易的在一台本地机器上运行 -你只需要安装一个JAVA环境并配置PATH环境变量,或者让JAVA_HOME指向你的JAVA安装路径
Spark 可运行在 Java 8+, Python 2.7+/3.4+ 和 R 3.1+ 的环境上。针对 Scala API, Spark 2.2.0 使用了 Scala 2.11\. 您将需要去使用一个可兼容的 Scala 版本 (2.11.x).
Spark 可运行在 Java 8+,Python 2.7+/3.4+ 和 R 3.1+ 的环境上。针对 Scala API,Spark 2.2.0 使用了 Scala 2.11\. 您将需要去使用一个可兼容的 Scala 版本 (2.11.x).
请注意, 从 Spark 2.2.0 起, 对 Java 7, Python 2.6 和旧的 Hadoop 2.6.5 之前版本的支持均已被删除.
请注意,从 Spark 2.2.0 起,对 Java 7,Python 2.6 和旧的 Hadoop 2.6.5 之前版本的支持均已被删除.
请注意, Scala 2.10 的支持已经不再适用于 Spark 2.1.0, 可能会在 Spark 2.3.0 中删除。
请注意,Scala 2.10 的支持已经不再适用于 Spark 2.1.0,可能会在 Spark 2.3.0 中删除。
# 运行示例和 Shell
Spark 自带了几个示例程序. Scala, Java, Python 和 R 示例在 `examples/src/main` 目录中. 要运行 Java 或 Scala 中的某个示例程序, 在最顶层的 Spark 目录中使用 `bin/run-example <class> [params]` 命令即可.(这个命令底层调用了 [`spark-submit` 脚本](submitting-applications.html)去加载应用程序)。例如,
Spark 自带了几个示例程序. Scala,Java,Python 和 R 示例在 `examples/src/main` 目录中. 要运行 Java 或 Scala 中的某个示例程序,在最顶层的 Spark 目录中使用 `bin/run-example <class> [params]` 命令即可.(这个命令底层调用了 [`spark-submit` 脚本](submitting-applications.html)去加载应用程序)。例如,
```
./bin/run-example SparkPi 10
......@@ -30,7 +30,7 @@ Spark 自带了几个示例程序. Scala, Java, Python 和 R 示例在 `examples
./bin/spark-shell --master local[2]
```
`--master`选项可以指定为 [针对分布式集群的 master URL](submitting-applications.html#master-urls), 或者 以`local`模式 使用 1 个线程在本地运行, `local[N]` 会使用 N 个线程在本地运行.你应该先使用local模式进行测试. 可以通过–help指令来获取spark-shell的所有配置项. Spark 同样支持 Python API。在 Python interpreter(解释器)中运行交互式的 Spark, 请使用 `bin/pyspark`:
`--master`选项可以指定为 [针对分布式集群的 master URL](submitting-applications.html#master-urls),或者 以`local`模式 使用 1 个线程在本地运行,`local[N]` 会使用 N 个线程在本地运行.你应该先使用local模式进行测试. 可以通过–help指令来获取spark-shell的所有配置项. Spark 同样支持 Python API。在 Python interpreter(解释器)中运行交互式的 Spark,请使用 `bin/pyspark`:
```
./bin/pyspark --master local[2]
......@@ -42,7 +42,7 @@ Python 中也提供了应用示例。例如,
./bin/spark-submit examples/src/main/python/pi.py 10
```
从 1.4 开始(仅包含了 DataFrames APIs)Spark 也提供了一个用于实验性的 [R API](sparkr.html)。为了在 R interpreter(解释器)中运行交互式的 Spark, 请执行 `bin/sparkR`:
从 1.4 开始(仅包含了 DataFrames APIs)Spark 也提供了一个用于实验性的 [R API](sparkr.html)。为了在 R interpreter(解释器)中运行交互式的 Spark请执行 `bin/sparkR`:
```
./bin/sparkR --master local[2]
......@@ -56,7 +56,7 @@ R 中也提供了应用示例。例如,
# 在集群上运行
该 Spark [集群模式概述](cluster-overview.html) 说明了在集群上运行的主要的概念。Spark 既可以独立运行, 也可以在一些现有的 Cluster Manager(集群管理器)上运行。它当前提供了几种用于部署的选项:
该 Spark [集群模式概述](cluster-overview.html) 说明了在集群上运行的主要的概念。Spark 既可以独立运行也可以在一些现有的 Cluster Manager(集群管理器)上运行。它当前提供了几种用于部署的选项:
* [Standalone Deploy Mode](spark-standalone.html): 在私有集群上部署 Spark 最简单的方式
* [Apache Mesos](running-on-mesos.html)
......
......@@ -53,5 +53,5 @@ Spark 即可以在应用间(Cluster Manager 级别),也可以在应用内
| Worker node | 任何在集群中可以运行应用代码的节点。 |
| Executor | 一个为了在 worker 节点上的应用而启动的进程,它运行 task 并且将数据保持在内存中或者硬盘存储。每个应用有它自己的 Executor。 |
| Task | 一个将要被发送到 Executor 中的工作单元。 |
| Job | 一个由多个任务组成的并行计算,并且能从 Spark action 中获取响应(例如 `save`, `collect`); 您将在 driver 的日志中看到这个术语。 |
| Job | 一个由多个任务组成的并行计算,并且能从 Spark action 中获取响应(例如 `save``collect`); 您将在 driver 的日志中看到这个术语。 |
| Stage | 每个 Job 被拆分成更小的被称作 stage(阶段) 的 task(任务) 组,stage 彼此之间是相互依赖的(与 MapReduce 中的 map 和 reduce stage 相似)。您将在 driver 的日志中看到这个术语。 |
\ No newline at end of file
......@@ -6,7 +6,7 @@
如果您的代码依赖了其它的项目,为了分发代码到 Spark 集群中您将需要将它们和您的应用程序一起打包。为此,创建一个包含您的代码以及依赖的 assembly jar(或者 “uber” jar)。无论是 [sbt](https://github.com/sbt/sbt-assembly) 还是 [Maven](http://maven.apache.org/plugins/maven-shade-plugin/) 都有 assembly 插件。在创建 assembly jar 时,列出 Spark 和 Hadoop的依赖为`provided`。它们不需要被打包,因为在运行时它们已经被 Cluster Manager 提供了。如果您有一个 assembled jar 您就可以调用 `bin/spark-submit` 脚本(如下所示)来传递您的 jar。
对于 Python 来说,您可以使用 `spark-submit``--py-files` 参数来添加 `.py`, `.zip``.egg` 文件以与您的应用程序一起分发。如果您依赖了多个 Python 文件我们推荐将它们打包成一个 `.zip` 或者 `.egg` 文件。
对于 Python 来说,您可以使用 `spark-submit``--py-files` 参数来添加 `.py``.zip``.egg` 文件以与您的应用程序一起分发。如果您依赖了多个 Python 文件我们推荐将它们打包成一个 `.zip` 或者 `.egg` 文件。
# 用 spark-submit 启动应用
......@@ -42,7 +42,7 @@
对于 Python 应用,在 `<application-jar>` 的位置简单的传递一个 `.py` 文件而不是一个 JAR,并且可以用 `--py-files` 添加 Python `.zip``.egg` 或者 `.py` 文件到 search path(搜索路径)。
这里有一些选项可用于特定的 [cluster manager](cluster-overview.html#cluster-manager-types) 中。例如, [Spark standalone cluster](spark-standalone.html)`cluster` 部署模式, 您也可以指定 `--supervise` 来确保 driver 在 non-zero exit code 失败时可以自动重启。为了列出所有 `spark-submit`, 可用的选项,用 `--help`. 来运行它。这里是一些常见选项的例子 :
这里有一些选项可用于特定的 [cluster manager](cluster-overview.html#cluster-manager-types) 中。例如, [Spark standalone cluster](spark-standalone.html)`cluster` 部署模式,您也可以指定 `--supervise` 来确保 driver 在 non-zero exit code 失败时可以自动重启。为了列出所有 `spark-submit`可用的选项,用 `--help`. 来运行它。这里是一些常见选项的例子 :
......@@ -118,14 +118,14 @@ export HADOOP_CONF_DIR=XXX
| `local[*,F]` | 使用更多的 worker 线程作为逻辑的 core 在您的机器上来本地的运行 Spark并允许最多失败 F次。 |
| `spark://HOST:PORT` | 连接至给定的 [Spark standalone cluster](spark-standalone.html) master. master。该 port(端口)必须有一个作为您的 master 配置来使用,默认是 7077。 |
| `spark://HOST1:PORT1,HOST2:PORT2` | 连接至给定的 [Spark standalone cluster with standby masters with Zookeeper](spark-standalone.html#standby-masters-with-zookeeper). 该列表必须包含由zookeeper设置的高可用集群中的所有master主机。该 port(端口)必须有一个作为您的 master 配置来使用,默认是 7077。 |
| `mesos://HOST:PORT` | 连接至给定的 [Mesos](running-on-mesos.html) 集群. 该 port(端口)必须有一个作为您的配置来使用,默认是 5050。或者,对于使用了 ZooKeeper 的 Mesos cluster 来说,使用 `mesos://zk://...`。使用 `--deploy-mode cluster`, 来提交,该 HOST:PORT 应该被配置以连接到 [MesosClusterDispatcher](running-on-mesos.html#cluster-mode). |
| `mesos://HOST:PORT` | 连接至给定的 [Mesos](running-on-mesos.html) 集群. 该 port(端口)必须有一个作为您的配置来使用,默认是 5050。或者,对于使用了 ZooKeeper 的 Mesos cluster 来说,使用 `mesos://zk://...`。使用 `--deploy-mode cluster`来提交,该 HOST:PORT 应该被配置以连接到 [MesosClusterDispatcher](running-on-mesos.html#cluster-mode). |
| `yarn` | 连接至一个 [YARN](running-on-yarn.html) cluster in `client` or `cluster` mode 取决于 `--deploy-mode`. 的值在 client 或者 cluster 模式中。该 cluster 的位置将根据 `HADOOP_CONF_DIR` 或者 `YARN_CONF_DIR` 变量来找到。 |
# 从文件中加载配置
`spark-submit` 脚本可以从一个 properties 文件加载默认的 [Spark configuration values](configuration.html) 并且传递它们到您的应用中去。默认情况下,它将从 Spark 目录下的 `conf/spark-defaults.conf` 读取配置。更多详细信息,请看 [加载默认配置](configuration.html#loading-default-configurations).
加载默认的 Spark 配置,这种方式可以消除某些标记到 `spark-submit`. 的必要性。例如,如果 `spark.master` 属性被设置了,您可以在`spark-submit`中安全的省略 `--master` 配置 . 一般情况下,明确设置在 `SparkConf` 上的配置值的优先级最高,然后是传递给 `spark-submit`的值, 最后才是 default value(默认文件)中的值。
加载默认的 Spark 配置,这种方式可以消除某些标记到 `spark-submit`. 的必要性。例如,如果 `spark.master` 属性被设置了,您可以在`spark-submit`中安全的省略 `--master` 配置 . 一般情况下,明确设置在 `SparkConf` 上的配置值的优先级最高,然后是传递给 `spark-submit`的值最后才是 default value(默认文件)中的值。
如果您不是很清楚其中的配置设置来自哪里,您可以通过使用 `--verbose` 选项来运行 `spark-submit` 打印出细粒度的调试信息。
......@@ -136,12 +136,12 @@ export HADOOP_CONF_DIR=XXX
Spark 使用下面的 URL 格式以允许传播 jar 时使用不同的策略 :
* **file:** - 绝对路径和 `file:/` URI 通过 driver 的 HTTP file server 提供服务,并且每个 executor 会从 driver 的 HTTP server 拉取这些文件。
* **hdfs:**, **http:**, **https:**, **ftp:** - 如预期的一样拉取下载文件和 JAR
* **hdfs:****http:****https:****ftp:** - 如预期的一样拉取下载文件和 JAR
* **local:** - 一个用 local:/ 开头的 URL 预期作在每个 worker 节点上作为一个本地文件存在。这样意味着没有网络 IO 发生,并且非常适用于那些已经被推送到每个 worker 或通过 NFS,GlusterFS等共享的大型的 file/JAR。
N注意,那些 JAR 和文件被复制到 working directory(工作目录)用于在 executor 节点上的每个 SparkContext。这可以使用最多的空间显著量随着时间的推移,将需要清理。在 Spark On YARN 模式中,自动执行清理操作。在 Spark standalone 模式中,可以通过配置 `spark.worker.cleanup.appDataTtl` 属性来执行自动清理。
用户也可以通过使用 `--packages`来提供一个逗号分隔的 maven coordinates(maven 坐标)以包含任何其它的依赖。在使用这个命令时所有可传递的依赖将被处理。其它的 repository(或者在 SBT 中被解析的)可以使用 `--repositories`该标记添加到一个逗号分隔的样式中。(注意,对于那些设置了密码保护的库,在一些情况下可以在库URL中提供验证信息,例如 `https://user:password@host/...`.以这种方式提供验证信息需要小心。) 这些命令可以与 `pyspark`, `spark-shell``spark-submit` 配置会使用以包含 Spark Packages(Spark 包)。对于 Python 来说,也可以使用 `--py-files` 选项用于分发 `.egg`, `.zip``.py` libraries 到 executor 中。
用户也可以通过使用 `--packages`来提供一个逗号分隔的 maven coordinates(maven 坐标)以包含任何其它的依赖。在使用这个命令时所有可传递的依赖将被处理。其它的 repository(或者在 SBT 中被解析的)可以使用 `--repositories`该标记添加到一个逗号分隔的样式中。(注意,对于那些设置了密码保护的库,在一些情况下可以在库URL中提供验证信息,例如 `https://user:password@host/...`.以这种方式提供验证信息需要小心。) 这些命令可以与 `pyspark``spark-shell``spark-submit` 配置会使用以包含 Spark Packages(Spark 包)。对于 Python 来说,也可以使用 `--py-files` 选项用于分发 `.egg``.zip``.py` libraries 到 executor 中。
# 更多信息
......
......@@ -41,13 +41,13 @@ Spark 除了运行在 Mesos 或者 YARN 上以外,Spark 还提供了一个简
| Argument(参数) | Meaning(含义) |
| --- | --- |
| `-h HOST`, `--host HOST` | 监听的 Hostname |
| `-i HOST`, `--ip HOST` | 监听的 Hostname (已弃用, 请使用 -h or --host) |
| `-p PORT`, `--port PORT` | 监听的服务 Port (端口) (默认: master 是 7077 , worker 是随机的) |
| `-h HOST``--host HOST` | 监听的 Hostname |
| `-i HOST``--ip HOST` | 监听的 Hostname (已弃用,请使用 -h or --host) |
| `-p PORT``--port PORT` | 监听的服务 Port (端口) (默认: master 是 7077 , worker 是随机的) |
| `--webui-port PORT` | web UI 的端口(默认: master 是 8080 , worker 是 8081) |
| `-c CORES`, `--cores CORES` | Spark 应用程序在机器上可以使用的全部的 CPU 核数(默认是全部可用的);这个选项仅在 worker 上可用 |
| `-m MEM`, `--memory MEM` | Spark 应用程序可以使用的内存数量,格式像 1000M 或者 2G(默认情况是您的机器内存数减去 1 GB);这个选项仅在 worker 上可用 |
| `-d DIR`, `--work-dir DIR` | 用于 scratch space (暂存空间)和作业输出日志的目录(默认是:SPARK_HOME/work);这个选项仅在 worker 上可用 |
| `-c CORES``--cores CORES` | Spark 应用程序在机器上可以使用的全部的 CPU 核数(默认是全部可用的);这个选项仅在 worker 上可用 |
| `-m MEM``--memory MEM` | Spark 应用程序可以使用的内存数量,格式像 1000M 或者 2G(默认情况是您的机器内存数减去 1 GB);这个选项仅在 worker 上可用 |
| `-d DIR``--work-dir DIR` | 用于 scratch space (暂存空间)和作业输出日志的目录(默认是:SPARK_HOME/work);这个选项仅在 worker 上可用 |
| `--properties-file FILE` | 自定义的 Spark 配置文件加载目录(默认:conf/spark-defaults.conf) |
# 集群启动脚本
......@@ -174,7 +174,7 @@ Spark 的 standalone 模式提供了一个基于 web 的用户接口来监控集
# 与 Hadoop 集成
您可以运行 Spark 集成到您现有的 Hadoop 集群,只需在同一台机器上将其作为单独的服务启动。要从 Spark 访问 Hadoop 的数据,只需要使用 hdfs:// URL (通常为 `hdfs://<namenode>:9000/path`, 但是您可以在您的 Hadoop Namenode 的 web UI 中找到正确的 URL。) 或者,您可以为 Spark 设置一个单独的集群,并且仍然可以通过网络访问 HDFS ;这将比磁盘本地访问速度慢,但是如果您仍然在同一个局域网中运行(例如,您将 Hadoop 上的每个机架放置几台 Spark 机器),可能不会引起关注。
您可以运行 Spark 集成到您现有的 Hadoop 集群,只需在同一台机器上将其作为单独的服务启动。要从 Spark 访问 Hadoop 的数据,只需要使用 hdfs:// URL (通常为 `hdfs://<namenode>:9000/path`但是您可以在您的 Hadoop Namenode 的 web UI 中找到正确的 URL。) 或者,您可以为 Spark 设置一个单独的集群,并且仍然可以通过网络访问 HDFS ;这将比磁盘本地访问速度慢,但是如果您仍然在同一个局域网中运行(例如,您将 Hadoop 上的每个机架放置几台 Spark 机器),可能不会引起关注。
# 配置网络安全端口
......
此差异已折叠。
此差异已折叠。
......@@ -15,13 +15,13 @@
# 概述
Spark 有好几计算资源调度的方式. 首先,回忆一下 [集群模式概述](cluster-overview.html), 每个Spark 应用(包含一个SparkContext实例)中运行了一些其独占的执行器(executor)进程. 集群管理器提供了Spark 应用之间的资源调度[scheduling across applications](#scheduling-across-applications). 其次, 在各个Spark应用内部,各个线程可能并发地通过action算子提交多个Spark作业(job).如果你的应用服务于网络请求,那这种情况是很常见的. 在Spark应用内部(对应同一个SparkContext)各个作业之间,Spark默认FIFO调度,同时也可以支持公平调度 [fair scheduler](#scheduling-within-an-application).
Spark 有好几计算资源调度的方式. 首先,回忆一下 [集群模式概述](cluster-overview.html),每个Spark 应用(包含一个SparkContext实例)中运行了一些其独占的执行器(executor)进程. 集群管理器提供了Spark 应用之间的资源调度[scheduling across applications](#scheduling-across-applications). 其次,在各个Spark应用内部,各个线程可能并发地通过action算子提交多个Spark作业(job).如果你的应用服务于网络请求,那这种情况是很常见的. 在Spark应用内部(对应同一个SparkContext)各个作业之间,Spark默认FIFO调度,同时也可以支持公平调度 [fair scheduler](#scheduling-within-an-application).
# 跨应用调度
如果在集群上运行,每个Spark应用都会SparkContext获得一批独占的执行器JVM,来运行其任务并存储数据. 如果有多个用户共享集群,那么会有很多资源分配相关的选项,如何设计还取觉于具体的集群管理器.
对Spark所支持的各个集群管理器而言,最简单的的资源分配,就是静态划分.这种方式就意味着,每个Spark应用都是设定一个最大可用资源总量,并且该应用在整个生命周期内都会占住这个资源.这种方式在 Spark’s独立部署 [standalone](spark-standalone.html)[YARN](running-on-yarn.html)调度,以及Mesos粗粒度模式下都可用.[coarse-grained Mesos mode](running-on-mesos.html#mesos-run-modes) . Resource allocation can be configured as follows, based on the cluster type:
对Spark所支持的各个集群管理器而言,最简单的的资源分配,就是静态划分.这种方式就意味着,每个Spark应用都是设定一个最大可用资源总量,并且该应用在整个生命周期内都会占住这个资源.这种方式在 Spark’s独立部署 [standalone](spark-standalone.html)[YARN](running-on-yarn.html)调度,以及Mesos粗粒度模式下都可用.[coarse-grained Mesos mode](running-on-mesos.html#mesos-run-modes) . Resource allocation can be configured as followsbased on the cluster type:
* **Standalone mode:** 默认情况下,Spark应用在独立部署的集群中都会以FIFO(first-in-first-out)模式顺序提交运行,并且每个spark应用都会占用集群中所有可用节点.不过你可以通过设置spark.cores.max或者spark.deploy.defaultCores来限制单个应用所占用的节点个数.最后,除了可以控制对CPU的使用数量之外,还可以通过spark.executor.memory来控制各个应用的内存占用量.
* **Mesos:** 在Mesos中要使用静态划分的话,需要将spark.mesos.coarse设为true,同样,你也需要配置spark.cores.max来控制各个应用的CPU总数,以及spark.executor.memory来控制各个应用的内存占用.
......@@ -33,7 +33,7 @@ Spark 有好几计算资源调度的方式. 首先,回忆一下 [集群模式概
Spark 提供了一种基于负载来动态调节Spark应用资源占用的机制。这意味着,你的应用会在资源空闲的时间将其释放给集群,需要时再重新申请。这一特性在多个应用Spark集群资源的情况下特别有用.
这个特性默认是禁止的,但是在所有的粗粒度集群管理器上都是可用的,如:i.e. 独立部署模式[standalone mode](spark-standalone.html), [YARN mode](running-on-yarn.html), and 粗粒度模式[Mesos coarse-grained mode](running-on-mesos.html#mesos-run-modes).
这个特性默认是禁止的,但是在所有的粗粒度集群管理器上都是可用的,如:i.e. 独立部署模式[standalone mode](spark-standalone.html)[YARN mode](running-on-yarn.html)and 粗粒度模式[Mesos coarse-grained mode](running-on-mesos.html#mesos-run-modes).
### 配置和部署
......@@ -41,7 +41,7 @@ Spark 提供了一种基于负载来动态调节Spark应用资源占用的机制
在Spark独立部署的集群中,你只需要在worker启动前设置spark.shuffle.service.enabled为true即可。
在Mesos粗粒度模式下,你需要在各个节点上运行$SPARK_HOME/sbin/start-mesos-shuffle-service.sh 并设置 spark.shuffle.service.enabled为true即可. 例如, 你可以在Marathon来启用这一功能。
在Mesos粗粒度模式下,你需要在各个节点上运行$SPARK_HOME/sbin/start-mesos-shuffle-service.sh 并设置 spark.shuffle.service.enabled为true即可. 例如你可以在Marathon来启用这一功能。
在YARN模式下,需要按以下步骤在各个NodeManager上启动: [here](running-on-yarn.html#configuring-the-external-shuffle-service).
......
......@@ -3,7 +3,7 @@
Spark 当前支持使用 shared secret(共享密钥)来 authentication(认证)。可以通过配置 `spark.authenticate` 参数来开启认证。这个参数用来控制 Spark 的通讯协议是否使用共享密钥来执行认证。这个认证是一个基本的握手,用来保证两侧具有相同的共享密钥然后允许通讯。如果共享密钥无法识别,他们将不能通讯。创建共享密钥的方法如下:
* 对于 Spark on [YARN](running-on-yarn.html) 的部署方式,配置 `spark.authenticate``true`,会自动生成和分发共享密钥。每个 application 会使用一个单独的共享密钥.
* 对于 Spark 的其他部署方式, 需要在每一个 nodes 配置 `spark.authenticate.secret` 参数. 这个密码将会被所有的 Master/Workers 和 aplication 使用.
* 对于 Spark 的其他部署方式需要在每一个 nodes 配置 `spark.authenticate.secret` 参数. 这个密码将会被所有的 Master/Workers 和 aplication 使用.
## Web UI
......
......@@ -240,7 +240,7 @@ run-tests 脚本也可以限于特定的 Python 版本或者特定的模块。
## 运行 R 测试
要运行 SparkR 测试,您需要首先安装 [knitr](https://cran.r-project.org/package=knitr), [rmarkdown](https://cran.r-project.org/package=rmarkdown), [testthat](https://cran.r-project.org/package=testthat), [e1071](https://cran.r-project.org/package=e1071) and [survival](https://cran.r-project.org/package=survival) 包:
要运行 SparkR 测试,您需要首先安装 [knitr](https://cran.r-project.org/package=knitr)[rmarkdown](https://cran.r-project.org/package=rmarkdown)[testthat](https://cran.r-project.org/package=testthat)[e1071](https://cran.r-project.org/package=e1071) and [survival](https://cran.r-project.org/package=survival) 包:
```
R -e "install.packages(c('knitr', 'rmarkdown', 'testthat', 'e1071', 'survival'), repos='http://cran.us.r-project.org')"
......
# 外部资源
* [Spark 首页](http://spark.apache.org)
* [Spark 社区](http://spark.apache.org/community.html) 资源, 包括当地的聚会
* [Spark 社区](http://spark.apache.org/community.html) 资源包括当地的聚会
* [StackOverflow tag `apache-spark`](http://stackoverflow.com/questions/tagged/apache-spark)
* [Mailing Lists](http://spark.apache.org/mailing-lists.html): 在这里询问关于 Spark 的问题
* [AMP Camps](http://ampcamp.berkeley.edu/): 在 UC Berkeley(加州大学伯克利分校)的一系列的训练营中, 它们的特色是讨论和针对关于 Spark, Spark Streaming, Mesos 的练习, 等等。在这里可以免费获取[视频](http://ampcamp.berkeley.edu/6/), [幻灯片](http://ampcamp.berkeley.edu/6/)[练习题](http://ampcamp.berkeley.edu/6/exercises/)
* [Code Examples](http://spark.apache.org/examples.html): 更多`示例`可以在 Spark 的子文件夹中获取 ([Scala](https://github.com/apache/spark/tree/master/examples/src/main/scala/org/apache/spark/examples), [Java](https://github.com/apache/spark/tree/master/examples/src/main/java/org/apache/spark/examples), [Python](https://github.com/apache/spark/tree/master/examples/src/main/python), [R](https://github.com/apache/spark/tree/master/examples/src/main/r))
\ No newline at end of file
* [AMP Camps](http://ampcamp.berkeley.edu/): 在 UC Berkeley(加州大学伯克利分校)的一系列的训练营中,它们的特色是讨论和针对关于 Spark,Spark Streaming,Mesos 的练习,等等。在这里可以免费获取[视频](http://ampcamp.berkeley.edu/6/)[幻灯片](http://ampcamp.berkeley.edu/6/)[练习题](http://ampcamp.berkeley.edu/6/exercises/)
* [Code Examples](http://spark.apache.org/examples.html): 更多`示例`可以在 Spark 的子文件夹中获取 ([Scala](https://github.com/apache/spark/tree/master/examples/src/main/scala/org/apache/spark/examples)[Java](https://github.com/apache/spark/tree/master/examples/src/main/java/org/apache/spark/examples)[Python](https://github.com/apache/spark/tree/master/examples/src/main/python)[R](https://github.com/apache/spark/tree/master/examples/src/main/r))
\ No newline at end of file
......@@ -7,17 +7,17 @@
* [独立的应用](#独立的应用)
* [快速跳转](#快速跳转)
本教程提供了如何使用 Spark 的快速入门介绍。首先通过运行 Spark 交互式的 shell(在 Python 或 Scala 中)来介绍 API, 然后展示如何使用 Java , Scala 和 Python 来编写应用程序。
本教程提供了如何使用 Spark 的快速入门介绍。首先通过运行 Spark 交互式的 shell(在 Python 或 Scala 中)来介绍 API,然后展示如何使用 Java ,Scala 和 Python 来编写应用程序。
为了继续阅读本指南, 首先从 [Spark 官网](http://spark.apache.org/downloads.html) 下载 Spark 的发行包。因为我们将不使用 HDFS, 所以你可以下载一个任何 Hadoop 版本的软件包。
为了继续阅读本指南,首先从 [Spark 官网](http://spark.apache.org/downloads.html) 下载 Spark 的发行包。因为我们将不使用 HDFS,所以你可以下载一个任何 Hadoop 版本的软件包。
请注意, 在 Spark 2.0 之前, Spark 的主要编程接口是弹性分布式数据集(RDD)。 在 Spark 2.0 之后, RDD 被 Dataset 替换, 它是像RDD 一样的 strongly-typed(强类型), 但是在引擎盖下更加优化。 RDD 接口仍然受支持, 您可以在 [RDD 编程指南](rdd-programming-guide.html) 中获得更完整的参考。 但是, 我们强烈建议您切换到使用 Dataset(数据集), 其性能要更优于 RDD。 请参阅 [SQL 编程指南](sql-programming-guide.html) 获取更多有关 Dataset 的信息。
请注意,在 Spark 2.0 之前,Spark 的主要编程接口是弹性分布式数据集(RDD)。 在 Spark 2.0 之后,RDD 被 Dataset 替换,它是像RDD 一样的 strongly-typed(强类型),但是在引擎盖下更加优化。 RDD 接口仍然受支持,您可以在 [RDD 编程指南](rdd-programming-guide.html) 中获得更完整的参考。 但是,我们强烈建议您切换到使用 Dataset(数据集),其性能要更优于 RDD。 请参阅 [SQL 编程指南](sql-programming-guide.html) 获取更多有关 Dataset 的信息。
# 使用 Spark Shell 进行交互式分析
## 基础
Spark shell 提供了一种来学习该 API 比较简单的方式, 以及一个强大的来分析数据交互的工具。在 Scala(运行于 Java 虚拟机之上, 并能很好的调用已存在的 Java 类库)或者 Python 中它是可用的。通过在 Spark 目录中运行以下的命令来启动它:
Spark shell 提供了一种来学习该 API 比较简单的方式,以及一个强大的来分析数据交互的工具。在 Scala(运行于 Java 虚拟机之上,并能很好的调用已存在的 Java 类库)或者 Python 中它是可用的。通过在 Spark 目录中运行以下的命令来启动它:
```
./bin/spark-shell
......@@ -34,7 +34,7 @@ textFile: org.apache.spark.sql.Dataset[String] = [value: string]
您可以直接从 Dataset 中获取 values(值), 通过调用一些 actions(动作), 或者 transform(转换)Dataset 以获得一个新的。更多细节, 请参阅 _[API doc](api/scala/index.html#org.apache.spark.sql.Dataset)_。
您可以直接从 Dataset 中获取 values(值),通过调用一些 actions(动作),或者 transform(转换)Dataset 以获得一个新的。更多细节,请参阅 _[API doc](api/scala/index.html#org.apache.spark.sql.Dataset)_。
......@@ -48,7 +48,7 @@ res1: String = # Apache Spark
现在让我们 transform 这个 Dataset 以获得一个新的。我们调用 `filter` 以返回一个新的 Dataset, 它是文件中的 items 的一个子集。
现在让我们 transform 这个 Dataset 以获得一个新的。我们调用 `filter` 以返回一个新的 Dataset它是文件中的 items 的一个子集。
......@@ -121,7 +121,7 @@ We can chain together transformations and actions:
## Dataset 上的更多操作
Dataset actions(操作)和 transformations(转换)可以用于更复杂的计算。例如, 统计出现次数最多的行 :
Dataset actions(操作)和 transformations(转换)可以用于更复杂的计算。例如统计出现次数最多的行 :
......@@ -132,7 +132,7 @@ res4: Long = 15
第一个 map 操作创建一个新的 Dataset, 将一行数据 map 为一个整型值。在 Dataset 上调用 `reduce` 来找到最大的行计数。参数 `map``reduce` 是 Scala 函数(closures), 并且可以使用 Scala/Java 库的任何语言特性。例如, 我们可以很容易地调用函数声明, 我们将定义一个 max 函数来使代码更易于理解 :
第一个 map 操作创建一个新的 Dataset,将一行数据 map 为一个整型值。在 Dataset 上调用 `reduce` 来找到最大的行计数。参数 `map``reduce` 是 Scala 函数(closures),并且可以使用 Scala/Java 库的任何语言特性。例如,我们可以很容易地调用函数声明,我们将定义一个 max 函数来使代码更易于理解 :
......@@ -157,7 +157,7 @@ wordCounts: org.apache.spark.sql.Dataset[(String, Long)] = [value: string, count
在这里, 我们调用了 `flatMap` 以 transform 一个 lines 的 Dataset 为一个 words 的 Dataset, 然后结合 `groupByKey``count` 来计算文件中每个单词的 counts 作为一个 (String, Long) 的 Dataset pairs。要在 shell 中收集 word counts, 我们可以调用 `collect`:
在这里,我们调用了 `flatMap` 以 transform 一个 lines 的 Dataset 为一个 words 的 Dataset,然后结合 `groupByKey``count` 来计算文件中每个单词的 counts 作为一个 (String, Long) 的 Dataset pairs。要在 shell 中收集 word counts,我们可以调用 `collect`:
......@@ -203,7 +203,7 @@ Here, we use the `explode` function in `select`, to transfrom a Dataset of lines
## 缓存
Spark 还支持 Pulling(拉取)数据集到一个群集范围的内存缓存中。例如当查询一个小的 “hot” 数据集或运行一个像 PageRANK 这样的迭代算法时, 在数据被重复访问时是非常高效的。举一个简单的例子, 让我们标记我们的 `linesWithSpark` 数据集到缓存中:
Spark 还支持 Pulling(拉取)数据集到一个群集范围的内存缓存中。例如当查询一个小的 “hot” 数据集或运行一个像 PageRANK 这样的迭代算法时,在数据被重复访问时是非常高效的。举一个简单的例子,让我们标记我们的 `linesWithSpark` 数据集到缓存中:
......@@ -220,7 +220,7 @@ res9: Long = 15
使用 Spark 来探索和缓存一个 100 行的文本文件看起来比较愚蠢。有趣的是, 即使在他们跨越几十或者几百个节点时, 这些相同的函数也可以用于非常大的数据集。您也可以像 [编程指南](rdd-programming-guide.html#using-the-shell). 中描述的一样通过连接 `bin/spark-shell` 到集群中, 使用交互式的方式来做这件事情。
使用 Spark 来探索和缓存一个 100 行的文本文件看起来比较愚蠢。有趣的是,即使在他们跨越几十或者几百个节点时,这些相同的函数也可以用于非常大的数据集。您也可以像 [编程指南](rdd-programming-guide.html#using-the-shell). 中描述的一样通过连接 `bin/spark-shell` 到集群中,使用交互式的方式来做这件事情。
......@@ -240,9 +240,9 @@ It may seem silly to use Spark to explore and cache a 100-line text file. The in
# 独立的应用
假设我们希望使用 Spark API 来创建一个独立的应用程序。我们在 Scala(SBT), Java(Maven)和 Python 中练习一个简单应用程序。
假设我们希望使用 Spark API 来创建一个独立的应用程序。我们在 Scala(SBT)Java(Maven)和 Python 中练习一个简单应用程序。
我们将在 Scala 中创建一个非常简单的 Spark 应用程序 - 很简单的, 事实上, 它名为 `SimpleApp.scala`:
我们将在 Scala 中创建一个非常简单的 Spark 应用程序 - 很简单的,事实上,它名为 `SimpleApp.scala`:
......@@ -265,13 +265,13 @@ object SimpleApp {
注意, 这个应用程序我们应该定义一个 `main()` 方法而不是去扩展 `scala.App`。使用 `scala.App` 的子类可能不会正常运行。
注意这个应用程序我们应该定义一个 `main()` 方法而不是去扩展 `scala.App`。使用 `scala.App` 的子类可能不会正常运行。
该程序仅仅统计了 Spark README 文件中每一行包含 ‘a’ 的数量和包含 ‘b’ 的数量。注意, 您需要将 YOUR_SPARK_HOME 替换为您 Spark 安装的位置。不像先前使用 spark shell 操作的示例, 它们初始化了它们自己的 SparkContext, 我们初始化了一个 SparkContext 作为应用程序的一部分。
该程序仅仅统计了 Spark README 文件中每一行包含 ‘a’ 的数量和包含 ‘b’ 的数量。注意,您需要将 YOUR_SPARK_HOME 替换为您 Spark 安装的位置。不像先前使用 spark shell 操作的示例,它们初始化了它们自己的 SparkContext,我们初始化了一个 SparkContext 作为应用程序的一部分。
我们调用 `SparkSession.builder` 以构造一个 [[SparkSession]], 然后设置 application name(应用名称), 最终调用 `getOrCreate` 以获得 [[SparkSession]] 实例。
我们调用 `SparkSession.builder` 以构造一个 [[SparkSession]],然后设置 application name(应用名称),最终调用 `getOrCreate` 以获得 [[SparkSession]] 实例。
我们的应用依赖了 Spark API, 所以我们将包含一个名为 `build.sbt` 的 sbt 配置文件, 它描述了 Spark 的依赖。该文件也会添加一个 Spark 依赖的 repository:
我们的应用依赖了 Spark API,所以我们将包含一个名为 `build.sbt` 的 sbt 配置文件,它描述了 Spark 的依赖。该文件也会添加一个 Spark 依赖的 repository:
......@@ -287,7 +287,7 @@ libraryDependencies += "org.apache.spark" %% "spark-sql" % "2.2.0"
为了让 sbt 正常的运行, 我们需要根据经典的目录结构来布局 `SimpleApp.scala``build.sbt` 文件。在成功后, 我们可以创建一个包含应用程序代码的 JAR 包, 然后使用 `spark-submit` 脚本来运行我们的程序。
为了让 sbt 正常的运行,我们需要根据经典的目录结构来布局 `SimpleApp.scala``build.sbt` 文件。在成功后,我们可以创建一个包含应用程序代码的 JAR 包,然后使用 `spark-submit` 脚本来运行我们的程序。
......@@ -452,20 +452,20 @@ Lines with a: 46, Lines with b: 23
恭喜您成功的运行了您的第一个 Spark 应用程序!
* 更多 API 的深入概述, 从 [RDD programming guide](rdd-programming-guide.html)[SQL programming guide](sql-programming-guide.html) 这里开始, 或者看看 “编程指南” 菜单中的其它组件。
* 为了在集群上运行应用程序, 请前往 [deployment overview](cluster-overview.html).
* 最后, 在 Spark 的 `examples` 目录中包含了一些 ([Scala](https://github.com/apache/spark/tree/master/examples/src/main/scala/org/apache/spark/examples), [Java](https://github.com/apache/spark/tree/master/examples/src/main/java/org/apache/spark/examples), [Python](https://github.com/apache/spark/tree/master/examples/src/main/python), [R](https://github.com/apache/spark/tree/master/examples/src/main/r)) 示例。您可以按照如下方式来运行它们:
* 更多 API 的深入概述,从 [RDD programming guide](rdd-programming-guide.html)[SQL programming guide](sql-programming-guide.html) 这里开始,或者看看 “编程指南” 菜单中的其它组件。
* 为了在集群上运行应用程序请前往 [deployment overview](cluster-overview.html).
* 最后,在 Spark 的 `examples` 目录中包含了一些 ([Scala](https://github.com/apache/spark/tree/master/examples/src/main/scala/org/apache/spark/examples)[Java](https://github.com/apache/spark/tree/master/examples/src/main/java/org/apache/spark/examples)[Python](https://github.com/apache/spark/tree/master/examples/src/main/python)[R](https://github.com/apache/spark/tree/master/examples/src/main/r)) 示例。您可以按照如下方式来运行它们:
```
# 针对 Scala 和 Java, 使用 run-example:
# 针对 Scala 和 Java使用 run-example:
./bin/run-example SparkPi
# 针对 Python 示例, 直接使用 spark-submit:
# 针对 Python 示例直接使用 spark-submit:
./bin/spark-submit examples/src/main/python/pi.py
# 针对 R 示例, 直接使用 spark-submit:
# 针对 R 示例直接使用 spark-submit:
./bin/spark-submit examples/src/main/r/dataframe.R
```
......
......@@ -2,7 +2,7 @@
## 前言
感谢大家默默的无私付出,感谢 [ApacheCN](htttp://www.apachecn.org) 让我们聚在一起奋斗, 才有了这份中文文档,我们一直在努力!\~\~\~
感谢大家默默的无私付出,感谢 [ApacheCN](htttp://www.apachecn.org) 让我们聚在一起奋斗才有了这份中文文档,我们一直在努力!\~\~\~
网址: [http://spark.apachecn.org/docs/cn/2.2.0](http://spark.apachecn.org/docs/cn/2.2.0/)
github: [https://github.com/apachecn/spark-doc-zh](https://github.com/apachecn/spark-doc-zh)
贡献者: [https://github.com/apachecn/spark-doc-zh#贡献者](https://github.com/apachecn/spark-doc-zh#贡献者)
......@@ -11,15 +11,15 @@ github: [https://github.com/apachecn/spark-doc-zh](https://github.com/apachecn/s
## Apache Spark 2.2.0 官方文档中文版翻译进度
* 2017-09-20: 校验 structured-streaming-kafka-integration.md 其中有问题的地方。
* 2017-09-14: 修改 sql-programming-guide.md 中其它翻译有问题的地方, 更多细节请看:[https://github.com/apachecn/spark-doc-zh/issues/95](https://github.com/apachecn/spark-doc-zh/issues/95)
* 2017-09-13: 修改 sql-programming-guide.md 中的`写作``写操作`, 英文原文为`writing`. 更多细节请看[https://github.com/apachecn/spark-doc-zh/issues/95](https://github.com/apachecn/spark-doc-zh/issues/95)
* 2017-09-14: 修改 sql-programming-guide.md 中其它翻译有问题的地方更多细节请看:[https://github.com/apachecn/spark-doc-zh/issues/95](https://github.com/apachecn/spark-doc-zh/issues/95)
* 2017-09-13: 修改 sql-programming-guide.md 中的`写作``写操作`英文原文为`writing`. 更多细节请看[https://github.com/apachecn/spark-doc-zh/issues/95](https://github.com/apachecn/spark-doc-zh/issues/95)
* 2017-08-29: 修改 index.md 中的语法问题.
* 2017-08-23: 修复 sql-programming-guide.md 中格式错乱的 BUG.
* 2017-08-14: 修改 index.md 和 tuning.md 中不正确的地方.
* 2017-08-08: 修改 index.md 中 API 文档失效的链接,直接指向官网,并且修改页面底部展示的风格.
* 2017-08-04: 增加[Spark Sql](http://spark.apachecn.org/docs/cn/2.2.0/sql-programming-guide.html)的文档翻译部分(100%).
* 2017-08-03: 增加[Spark Streaming](http://spark.apachecn.org/docs/cn/2.2.0/streaming-programming-guide.html)的文档翻译部分(100%).
* 2017-07-25:[Apache Spark 2.2.0 官方文档中文版](http://spark.apachecn.org/docs/cn/2.2.0/)发布(翻译进度 80%), 维护网址:[http://spark.apachecn.org/docs/cn/2.2.0/](http://spark.apachecn.org/docs/cn/2.2.0/)
* 2017-07-25:[Apache Spark 2.2.0 官方文档中文版](http://spark.apachecn.org/docs/cn/2.2.0/)发布(翻译进度 80%)维护网址:[http://spark.apachecn.org/docs/cn/2.2.0/](http://spark.apachecn.org/docs/cn/2.2.0/)
| 是否完成 | 完成百分比 | 任务名称 | Markdown | 工期 | 开始时间 | 结束时间 | 贡献者 | 备注 |
| --- | --- | --- | --- | --- | --- | --- | --- | --- |
......
此差异已折叠。
此差异已折叠。
此差异已折叠。
......@@ -483,7 +483,7 @@ class Graph[VD, ED] {
用户定义的 `sendMsg` 函数接受一个 [`EdgeContext`](api/scala/index.html#org.apache.spark.graphx.EdgeContext) ,它将源和目标属性以及 edge 属性和函数 ([`sendToSrc`](api/scala/index.html#org.apache.spark.graphx.EdgeContext@sendToSrc(msg:A):Unit), [`sendToDst`](api/scala/index.html#org.apache.spark.graphx.EdgeContext@sendToDst(msg:A):Unit)) 一起发送到源和目标属性。在 map-reduce 中,将 `sendMsg` 作为 _map_ 函数。用户定义的 `mergeMsg` 函数需要两个发往同一顶点的消息,并产生一条消息。想想 `mergeMsg` 是 map-reduce 中的_reduce_ 函数。[`aggregateMessages`](api/scala/index.html#org.apache.spark.graphx.Graph@aggregateMessages[A]((EdgeContext[VD,ED,A])⇒Unit,(A,A)⇒A,TripletFields)(ClassTag[A]):VertexRDD[A]) 运算符返回一个 `VertexRDD[Msg]` ,其中包含去往每个顶点的聚合消息(Msg类型)。没有收到消息的顶点不包括在返回的 `VertexRDD`[VertexRDD](api/scala/index.html#org.apache.spark.graphx.VertexRDD) 中。
用户定义的 `sendMsg` 函数接受一个 [`EdgeContext`](api/scala/index.html#org.apache.spark.graphx.EdgeContext) ,它将源和目标属性以及 edge 属性和函数 ([`sendToSrc`](api/scala/index.html#org.apache.spark.graphx.EdgeContext@sendToSrc(msg:A):Unit)[`sendToDst`](api/scala/index.html#org.apache.spark.graphx.EdgeContext@sendToDst(msg:A):Unit)) 一起发送到源和目标属性。在 map-reduce 中,将 `sendMsg` 作为 _map_ 函数。用户定义的 `mergeMsg` 函数需要两个发往同一顶点的消息,并产生一条消息。想想 `mergeMsg` 是 map-reduce 中的_reduce_ 函数。[`aggregateMessages`](api/scala/index.html#org.apache.spark.graphx.Graph@aggregateMessages[A]((EdgeContext[VD,ED,A])⇒Unit,(A,A)⇒A,TripletFields)(ClassTag[A]):VertexRDD[A]) 运算符返回一个 `VertexRDD[Msg]` ,其中包含去往每个顶点的聚合消息(Msg类型)。没有收到消息的顶点不包括在返回的 `VertexRDD`[VertexRDD](api/scala/index.html#org.apache.spark.graphx.VertexRDD) 中。
另外,[`aggregateMessages`](api/scala/index.html#org.apache.spark.graphx.Graph@aggregateMessages[A]((EdgeContext[VD,ED,A])⇒Unit,(A,A)⇒A,TripletFields)(ClassTag[A]):VertexRDD[A]) 采用一个可选的`tripletsFields` ,它们指示在 [`EdgeContext`](api/scala/index.html#org.apache.spark.graphx.EdgeContext) 中访问哪些数据(即源顶点属性,而不是目标顶点属性)。`tripletsFields` 定义的可能选项, [`TripletFields`](api/java/org/apache/spark/graphx/TripletFields.html) 默认值是 [`TripletFields.All`](api/java/org/apache/spark/graphx/TripletFields.html#All) 指示用户定义的 `sendMsg` 函数可以访问的任何字段[`EdgeContext`](api/scala/index.html#org.apache.spark.graphx.EdgeContext)。该 `tripletFields` 参数可用于通知 GraphX ,只有部分 [`EdgeContext`](api/scala/index.html#org.apache.spark.graphx.EdgeContext) 需要允许 GraphX 选择优化的连接策略。例如,如果我们计算每个用户的追随者的平均年龄,我们只需要源字段,因此我们将用于 [`TripletFields.Src`](api/java/org/apache/spark/graphx/TripletFields.html#Src) 表示我们只需要源字段。
......
此差异已折叠。
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册