本文档介绍了如何启用 Managed Service for Apache Spark Spark 性能增强功能,以帮助 Managed Service for Apache Spark 作业在更短的时间内处理更多数据,同时降低费用。
Managed Service for Apache Spark 性能增强功能包括:
- Spark 优化器增强功能:
- 为优化 Spark 方案而编写的优化器规则
- 在 Spark 作业中使用时,Managed Service for Apache Spark BigQuery 连接器的性能得到提升
- Spark 执行增强功能:
- Spark 执行引擎改进
其他 Managed Service for Apache Spark 性能改进: 请参阅 Managed Service for Apache Spark 集群缓存, 这有助于缩短访问 Cloud Storage 中的数据所花费的时间。
您可以在集群或 Spark 作业上启用 Spark 性能增强功能:
默认情况下,在集群上启用的 Spark 性能增强功能会应用于在集群上运行的所有 Spark 作业,无论是提交到 Managed Service for Apache Spark 还是直接提交到集群。
您还可以在提交给 Managed Service for Apache Spark 的作业上 启用或停用 Spark 性能增强功能。应用于作业的 Spark 性能增强功能设置仅会替换在集群级层为指定作业设置的任何冲突设置。
价格
Spark 性能增强功能不会产生额外费用。适用标准 Managed Service for Apache Spark 价格。
注意事项
Spark 性能增强功能会调整 Spark 属性,包括以下属性:
spark.sql.shuffle.partitions:对于2.2映像版本集群,Spark 性能增强功能会将此属性设置为1000。此设置可能会导致小型作业速度变慢。spark.dataproc.sql.catalog.file.index.stats.enabled:如果 Hive 分区计数较高,此设置可能会导致驱动程序 OOM(内存不足)情况。停用此属性可以解决 OOM 情况。
在集群创建时启用增强功能
在使用 2.0.69+、2.1.17+、2.2.0+ 版本映像及更高版本映像创建 Managed Service for Apache Spark 集群时,您可以使用 Google Cloud 控制台、Google Cloud CLI 和 Managed Service for Apache Spark API 启用 Managed Service for Apache Spark 性能增强功能 。
控制台
- 在 Google Cloud 控制台中,打开 Managed Service for Apache Spark 创建集群 页面。
- 在创建 Managed Service for Apache Spark 集群 表单中,点击集群 行中的创建 。
- 在创建 Managed Service for Apache Spark 集群 页面上,点击自定义集群 面板,然后滚动到集群属性 部分。
- 如需启用 Spark 优化增强功能,请执行以下操作:
- 点击 + 添加属性。
- 在前缀列表中选择 spark,然后在键字段中添加“spark.dataproc.enhanced.optimizer.enabled”,并在值字段中添加“true”。
- 如需启用 Spark 执行增强功能,请执行以下操作:
- 点击 + 添加属性。
- 在前缀列表中选择 spark,然后在键字段中添加“spark.dataproc.enhanced.execution.enabled”,并在值字段中添加“true”。
- 如需启用 Spark 优化增强功能,请执行以下操作:
- 完成填写或确认其他集群创建字段,然后点击创建。
gcloud
在终端窗口或 Cloud Shell 中以本地方式运行以下 gcloud dataproc clusters create 命令。
gcloud dataproc clusters create CLUSTER_NAME \ --project=PROJECT_ID \ --region=REGION \ --image-version=IMAGE \ --properties=PROPERTIES
注意:
- CLUSTER_NAME:集群名称(在项目中必须是唯一的)。该名称必须以小写字母开头,最多可包含 51 个小写字母、数字和连字符,不能以连字符结尾。已删除集群的名称可以再次使用。
- PROJECT_ID:要与此集群关联的项目。
- REGION:集群所在的
Compute Engine 区域
,例如
us-central1。- 您可以添加可选的
--zone=ZONE标志 以在指定区域内指定可用区, 例如us-central1-a。如果您未指定可用区, Managed Service for Apache Spark 自动选择可用区 功能会在指定区域内选择可用区。
- 您可以添加可选的
- IMAGE:Managed Service for Apache Spark 优化器和执行性能
增强功能在 Managed Service for Apache Spark 映像版本
2.0.69+和2.1.17+及更高版本中提供。如果您省略此标志,Managed Service for Apache Spark 将为集群选择默认 Managed Service for Apache Spark 映像的最新次要版本(请参阅 默认 Managed Service for Apache Spark 映像版本)。 PROPERTIES:
- 如需启用 Spark 优化增强功能,请指定:
spark:spark.dataproc.enhanced.optimizer.enabled=true- 如需启用 Spark 执行增强功能,请指定:
spark:spark.dataproc.enhanced.execution.enabled=true- 如需启用 Spark 优化和执行增强功能,请指定:
spark:spark.dataproc.enhanced.optimizer.enabled=true,spark:spark.dataproc.enhanced.execution.enabled=true
API
在
clusters.create请求中指定以下SoftwareConfig.properties:- 如需启用 Spark 优化增强功能,请指定:
"spark:spark.dataproc.enhanced.optimizer.enabled": "true"- 如需启用 Spark 执行增强功能,请指定:
"spark:spark.dataproc.enhanced.execution.enabled": "true"- 如需启用 Spark 优化和执行增强功能,请指定:
"spark:spark.dataproc.enhanced.optimizer.enabled": "true","spark:spark.dataproc.enhanced.execution.enabled": "true"
在作业提交时启用或停用增强功能
您可以使用 Google Cloud 控制台、Google Cloud CLI 和 Managed Service for Apache Spark API 在提交给 Managed Service for Apache Spark 的 Spark 作业上启用或停用 Spark 性能增强功能。
控制台
- 在 Google Cloud 控制台中,打开 Managed Service for Apache Spark 作业 页面。
- 在作业 页面上,点击提交作业 ,然后滚动到作业的
属性 部分。
- 如需启用 Spark 优化增强功能,请执行以下操作:
- 点击 + 添加属性。 在键字段中添加“spark.dataproc.enhanced.optimizer.enabled”,并在值字段中添加“true”。
- 如需启用 Spark 执行增强功能,请执行以下操作:
- 点击 + 添加属性。
- 在键字段中添加“spark.dataproc.enhanced.execution.enabled”,并在值字段中添加“true”。
- 如需启用 Spark 优化增强功能,请执行以下操作:
- 完成填写或确认其他作业提交字段,然后点击提交 。
gcloud
在终端窗口或 Cloud Shell 中以本地方式运行以下 gcloud dataproc jobs submit 命令。
gcloud dataproc jobs submit SPARK_JOB_TYPE \ --cluster=CLUSTER_NAME \ --region=REGION \ --properties=PROPERTIES
注意:
- SPARK_JOB_TYPE:指定
spark、pyspark、spark-sql或spark-r。 - CLUSTER_NAME:作业将在其中运行的集群的名称。
- REGION:集群所在的区域。
PROPERTIES:
- 如需启用 Spark 优化增强功能,请指定:
spark.dataproc.enhanced.optimizer.enabled=true- 如需启用 Spark 执行增强功能,请指定:
spark.dataproc.enhanced.execution.enabled=true- 如需启用 Spark 优化和执行增强功能,请指定:
spark.dataproc.enhanced.optimizer.enabled=true,spark.dataproc.enhanced.execution.enabled=true
- SPARK_JOB_TYPE:指定
API
在
jobs.submit请求中为 SparkJob、 PySparkJob、 SparkSqlJob或 SparkRJob 指定以下properties:- 如需启用 Spark 优化增强功能,请指定:
"spark.dataproc.enhanced.optimizer.enabled=true"- 如需启用 Spark 执行增强功能,请指定:
"spark.dataproc.enhanced.execution.enabled=true"- 如需启用 Spark 优化和执行增强功能,请指定:
"spark.dataproc.enhanced.execution.enabled=true,spark.dataproc.enhanced.optimizer.enabled=true"