通过 Apache Spark 的 Amazon Redshift 集成,简化和加速 Amazon Redshift 数据上的 Apache Spark 应用程序

通过 Apache Spark 的 Amazon Redshift 集成,简化和加速 Amazon Redshift 数据上的 Apache Spark 应用程序

源节点: 2597866

客户使用 亚马逊Redshift 对 PB 级结构化和半结构化数据运行关键业务分析。 Apache Spark 是一个流行的框架,您可以使用它为 ETL(提取、转换和加载)、交互式分析和机器学习 (ML) 等用例构建应用程序。 Apache Spark 使您能够通过访问 Amazon Redshift 数据仓库中的数据,以多种语言构建应用程序,例如 Java、Scala 和 Python。

Amazon Redshift 与 Apache Spark 的集成可帮助开发人员在 Amazon Redshift 数据上无缝构建和运行 Apache Spark 应用程序。 开发人员可以使用 AWS 分析和 ML 服务,例如 亚马逊电子病历, AWS胶水亚马逊SageMaker 毫不费力地构建 Apache Spark 应用程序,这些应用程序可以读取和写入其 Amazon Redshift 数据仓库。 您可以在不影响应用程序性能或数据事务一致性的情况下这样做。

在本文中,我们讨论了为什么 Apache Spark 的 Amazon Redshift 集成对于分析和 ML 至关重要且高效。 此外,我们还讨论了使用 Amazon Redshift 与 Apache Spark 集成来推动业务影响的用例。 最后,我们将逐步介绍如何在 Apache Spark 应用程序中使用此官方 AWS 连接器的示例。

适用于 Apache Spark 的 Amazon Redshift 集成

Apache Spark 的 Amazon Redshift 集成最大限度地减少了设置 spark-redshift 连接器的繁琐且通常是手动的过程(社区版) 并缩短准备分析和 ML 任务所需的时间。 您只需指定与数据仓库的连接,即可在几分钟内开始使用基于 Apache Spark 的应用程序中的 Amazon Redshift 数据。

您可以对排序、聚合、限制、连接和标量函数等操作使用多种下推功能,以便仅将相关数据从您的 Amazon Redshift 数据仓库移动到使用 Apache Spark 应用程序。 这使您可以提高应用程序的性能。 Amazon Redshift 管理员可以轻松识别从基于 Spark 的应用程序生成的 SQL。 在本文中,我们将展示如何找出 Apache Spark 作业生成的 SQL。

此外,Apache Spark 的 Amazon Redshift 集成在临时目录中暂存数据时使用 Parquet 文件格式。 Amazon Redshift 使用 UNLOAD SQL 语句将此临时数据存储在 亚马逊简单存储服务 (亚马逊 S3)。 Apache Spark 应用程序从临时目录(以 Parquet 文件格式存储)检索结果,从而提高性能。

您还可以通过利用 AWS身份和访问管理 (IAM) 凭证以连接到 Amazon Redshift。

Apache Spark 的 Amazon Redshift 集成构建在 spark-redshift 连接器之上(社区版) 并增强了它的性能和安全性,帮助您获得高达 10 倍的应用程序性能。

Amazon Redshift 与 Apache Spark 集成的用例

对于我们的用例,基于产品的公司的领导层想要了解每个产品在多个市场的销售额。 由于公司的销售额动态波动,领导层跟踪多个市场的销售额已成为一项挑战。 然而,整体销售额在下降,公司领导层希望找出哪些市场表现不佳,以便他们可以针对这些市场开展促销活动。

对于跨多个市场的销售,订单、交易和发货数据等产品销售数据可在数据湖中的 Amazon S3 上获得。 数据工程团队可以将 Apache Spark 与 Amazon EMR 或 AWS Glue 结合使用来分析 Amazon S3 中的此数据。

清单数据在 Amazon Redshift 中可用。 同样,数据工程团队可以使用 Apache Spark 使用 Amazon EMR 或 AWS Glue 作业分析此数据,方法是使用适用于 Apache Spark 的 Amazon Redshift 集成来执行聚合和转换。 使用适用于 Apache Spark 的 Amazon Redshift 集成,可以将聚合和转换后的数据集存储回 Amazon Redshift。

使用 Apache Spark 等分布式框架与 Apache Spark 的 Amazon Redshift 集成可以提供跨数据湖和数据仓库的可见性以生成销售洞察。 这些见解可以提供给 Amazon Redshift 中的业务利益相关者和业务线用户,以做出明智的决策,为低收入细分市场开展有针对性的促销活动。

此外,我们可以在以下用例中使用 Amazon Redshift 与 Apache Spark 的集成:

  • 运行 Apache Spark 作业的 Amazon EMR 或 AWS Glue 客户希望转换数据并将其作为 ETL 管道的一部分写入 Amazon Redshift
  • ML 客户使用 Apache Spark 和 SageMaker 进行特征工程以访问和转换 Amazon Redshift 中的数据
  • Amazon EMR、AWS Glue 或 SageMaker 客户使用 Apache Spark 对来自笔记本的 Amazon Redshift 上的数据进行交互式数据分析

Apache Spark 应用程序中 Apache Spark 的 Amazon Redshift 集成示例

在本文中,我们展示了从 Amazon EMR 连接 Amazon Redshift 的步骤 亚马逊弹性计算云 (亚马逊EC2), Amazon EMR 无服务器和 AWS Glue 使用通用脚本。 在下面的示例代码中,我们生成了一份显示 2008 年季度销售额的报告。为此,我们使用 Apache Spark DataFrame 连接两个 Amazon Redshift 表,运行谓词下推,聚合和排序数据,并编写转换后的数据数据返回到 Amazon Redshift。 该脚本使用 PySpark

该脚本使用 Amazon Redshift 基于 IAM 的身份验证. Amazon EMR 和 AWS Glue 使用的 IAM 角色应该有适当的权限来验证 Amazon Redshift,并访问用于临时数据存储的 S3 存储桶。

以下示例策略允许 IAM 角色调用 GetClusterCredentials 操作:

{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": "redshift:GetClusterCredentials", "Resource": "arn:aws:redshift:<aws_region_name>:xxxxxxxxxxxx:dbuser:*/temp_*" }
}

以下示例策略允许访问用于临时数据存储的 S3 存储桶:

{ "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": [ "s3:PutObject", "s3:GetObject", "s3:ListBucket" ], "Resource": "arn:aws:s3:::<s3_bucket_name>" } ]
}

完整脚本如下:

from pyspark.sql import SparkSession
from pyspark.sql.functions import col # Initiate Apache Spark session
spark = SparkSession .builder .appName("SparkRedshiftConnector") .enableHiveSupport() .getOrCreate() # Set connection options for Amazon Redshift
jdbc_iam_url = "jdbc:redshift:iam://redshift-spark-connector-1.xxxxxxxxxxx.<aws_region_name>.redshift.amazonaws.com:5439/sample_data_dev"
temp_dir = 's3://<s3_bucket_name>/redshift-temp-dir/'
aws_role = 'arn:aws:iam::xxxxxxxxxxxx:role/redshift-s3' # Set query group for the query. More details on Amazon Redshift WLM https://docs.aws.amazon.com/redshift/latest/dg/cm-c-executing-queries.html
queryGroup = "emr-redshift"
jdbc_iam_url_withQueryGroup = jdbc_iam_url+'?queryGroup='+queryGroup # Set User name for the query
userName = 'awsuser'
jdbc_iam_url_withUserName = jdbc_iam_url_withQueryGroup+';user='+userName # Define the Amazon Redshift context
redshiftOptions = { "url": jdbc_iam_url_withUserName, "tempdir": temp_dir, "aws_iam_role" : aws_role
} # Create the sales DataFrame from Amazon Redshift table using io.github.spark_redshift_community.spark.redshift class
sales_df = ( spark.read .format("io.github.spark_redshift_community.spark.redshift") .options(**redshiftOptions) .option("dbtable", "tickit.sales") .load()
) # Create the date Data Frame from Amazon Redshift table
date_df = ( spark.read .format("io.github.spark_redshift_community.spark.redshift") .options(**redshiftOptions) .option("dbtable", "tickit.date") .load()
) # Assign a Data Frame to the above output which will be written back to Amazon Redshift
output_df= sales_df.join(date_df, sales_df.dateid == date_df.dateid, 'inner').where( col("year") == 2008).groupBy("qtr").sum("qtysold").select( col("qtr"), col("sum(qtysold)")).sort(["qtr"], ascending=[1]).withColumnRenamed("sum(qtysold)","total_quantity_sold") # Display the output
output_df.show() ## Lets drop the queryGroup for easy validation of push down queries
# Set User name for the query
userName = 'awsuser'
jdbc_iam_url_withUserName = jdbc_iam_url+'?user='+userName # Define the Amazon Redshift context
redshiftWriteOptions = { "url": jdbc_iam_url_withUserName, "tempdir": temp_dir, "aws_iam_role" : aws_role
} # Write the Data Frame back to Amazon Redshift
output_df.write .format("io.github.spark_redshift_community.spark.redshift") .mode("overwrite") .options(**redshiftWriteOptions) .option("dbtable", "tickit.test") .save()

如果您计划在您的环境中使用上述脚本,请确保将以下变量的值替换为适合您环境的值: jdbc_iam_url, temp_diraws_role.

在下一节中,我们将逐步完成运行此脚本以聚合 Amazon Redshift 中提供的示例数据集的步骤。

先决条件

在我们开始之前,请确保满足以下先决条件:

使用 AWS CloudFormation 部署资源

完成以下步骤以部署 CloudFormation 堆栈:

  1. 登录 AWS管理控制台,然后启动 CloudFormation 堆栈:
    BDB-2063-launch-cloudformation-stack

你也可以 下载 CloudFormation 模板 通过基础架构即代码 (IaC) 创建本文中提到的资源。 启动新的 CloudFormation 堆栈时使用此模板。

  1. 向下滚动到页面底部以选择 我承认AWS CloudFormation可能会创建IAM资源公司能力,然后选择 创建堆栈.

堆栈创建过程需要 15-20 分钟才能完成。 CloudFormation 模板创建以下资源:

    • 具有所需子网、路由表和 NAT 网关的 Amazon VPC
    • 名称为 S3 的存储桶 redshift-spark-databucket-xxxxxxx (注意 xxxxxxx 是一个随机字符串,使桶名唯一)
    • 示例数据加载到数据库中的 Amazon Redshift 集群 dev 和主要用户 redshiftmasteruser. 出于这篇博文的目的, redshiftmasteruser 使用具有管理权限。 但是,建议在生产环境中使用具有细粒度访问控制的用户。
    • 用于 Amazon Redshift 的 IAM 角色,能够从 Amazon Redshift 集群的开发数据库请求临时凭证
    • 亚马逊EMR Studio 具有所需的 IAM 角色
    • 具有所需 IAM 角色的 EC6.9.0 集群上的 Amazon EMR 版本 2
    • Amazon EMR 无服务器应用程序发布版本 6.9.0
    • AWS Glue 连接和 AWS Glue 作业版本 4.0
    • A Jupyter笔记本 在 EC2 集群上使用 Amazon EMR 使用 Amazon EMR Studio 运行
    • 使用 Amazon EMR Studio 和 Amazon EMR Serverless 运行的 PySpark 脚本
  1. 堆栈创建完成后,选择堆栈名称 redshift-spark 然后导航到 输出

我们稍后会在本文中使用这些输出值。

在接下来的部分中,我们将展示从 Amazon EC2、Amazon EMR Serverless 和 AWS Glue 上的 Amazon EMR 为 Apache Spark 集成 Amazon Redshift 的步骤。

在 EC2 上的 Amazon EMR 上使用 Amazon Redshift 与 Apache Spark 的集成

从 Amazon EMR 版本 6.9.0 及更高版本开始,Amazon EMR 本地提供使用 Apache Spark 和 Amazon Redshift JDBC 驱动程序的 Amazon Redshift 集成的连接器。 这些文件位于 /usr/share/aws/redshift/ 目录。 但是,在以前版本的 Amazon EMR 中, 社体的一部分 的版本 spark-redshift 连接器 是可用的。

以下示例显示了如何使用 PySpark 内核通过一个连接 Amazon Redshift 亚马逊EMR Studio 笔记本。 CloudFormation 堆栈创建了 Amazon EMR Studio、EC2 集群上的 Amazon EMR,以及可供运行的 Jupyter notebook。 要完成此示例,请完成以下步骤:

  1. 下载 S3 存储桶中为您提供的 Jupyter notebook:
    • 在 CloudFormation 堆栈输出中,查找值 EMRStudioNotebook,它应该指向 redshift-spark-emr.ipynb S3 存储桶中可用的笔记本。
    • 选择链接或通过复制笔记本的 URL 在新选项卡中打开链接。
    • 打开链接后,通过选择下载笔记本 下载,这会将文件本地保存在您的计算机上。
  1. 通过选择或复制 CloudFormation 堆栈输出中为密钥提供的链接来访问 Amazon EMR Studio EMRStudioURL.
  2. 在导航窗格中,选择 工作区.
  3. 创建工作区.
  4. 为工作区提供一个名称,例如 redshift-spark.
  5. 展开 高级配置 部分并选择 将 Workspace 附加到 EMR 集群.
  6. 附加到 EMR 集群, 选择名称为 EMR 的集群 emrCluster-Redshift-Spark.
  7. 创建工作区.
  8. Amazon EMR Studio 工作区创建完成并处于Attached 状态后,您可以通过选择工作区的名称来访问该工作区。

这应该会在新选项卡中打开工作区。 请注意,如果您有弹出窗口阻止程序,您可能必须允许工作区打开或禁用弹出窗口阻止程序。

在 Amazon EMR Studio 工作区中,我们现在上传之前下载的 Jupyter notebook。

  1. 上传 浏览本地文件系统并上传 Jupyter notebook (redshift-spark-emr.ipynb).
  2. 选择(双击) redshift-spark-emr.ipynb 工作区内的笔记本以打开笔记本。

notebook 提供了它执行的不同任务的详细信息。 请注意,在该部分 定义连接到 Amazon Redshift 集群的变量,您不需要更新值 jdbc_iam_url, temp_diraws_role 因为这些是由 AWS CloudFormation 为您更新的。 AWS CloudFormation 还执行了 先决条件 笔记本部分。

您现在可以开始运行笔记本了。

  1. 通过选择它们然后选择来运行单个单元格 播放.

您还可以使用组合键 Shift + Enter键 or Shift+回车. 或者,您可以通过选择运行所有单元格 运行所有单元格运行 菜单。

  1. 查找由 Apache Spark 的 Amazon Redshift 集成在 Amazon Redshift 集群上执行的谓词下推操作。

我们还可以看到以优化的 Parquet 格式存储在 Amazon S3 上的临时数据。 可以从运行该部分的单元格中看到输出 获取在 Amazon Redshift 上执行的最后一个查询.

  1. 要验证由来自 Amazon EC2 上的 Amazon EMR 的作业创建的表,请导航至 Amazon Redshift 控制台并选择集群 redshift-spark-redshift-cluster已配置的集群仪表板 页面上发布服务提醒。
  2. 在集群详细信息中,关于 查询数据 菜单中选择 在查询编辑器 v2 中查询.
  3. 在导航窗格中选择集群并在请求身份验证时连接到 Amazon Redshift 集群。
  4. 选择 临时凭证.
  5. 针对 数据库,输入 dev.
  6. 针对 用户名,输入 redshiftmasteruser.
  7. 保存.
  8. 在导航窗格中,展开集群 redshift-spark-redshift-cluster,展开开发数据库,​​展开 tickit, 并展开 列出模式中的所有表 tickit.

你应该找到桌子 test_emr.

  1. 选择(右键单击)表 test_emr,然后选择 选择表 查询表。
  2. 运行 运行 SQL 语句。

在 Amazon EMR 无服务器上使用 Amazon Redshift 与 Apache Spark 的集成

Amazon EMR 版本 6.9.0 及更高版本在 Amazon EMR Serverless 上本地为 Apache Spark JAR(由 Amazon Redshift 管理)和 Amazon Redshift JDBC JAR 提供 Amazon Redshift 集成。 这些文件位于 /usr/share/aws/redshift/ 目录。 在以下示例中,我们使用我们之前创建的 CloudFormation 堆栈在 S3 存储桶中提供的 Python 脚本。

  1. 在 CloudFormation 堆栈输出中,记下以下值 EMRServerlessExecutionScript,这是 Python 脚本在 S3 存储桶中的位置。
  2. 还要注意的值 EMRServerlessJobExecutionRole,这是用于运行 Amazon EMR 无服务器作业的 IAM 角色。
  3. 通过选择或复制 CloudFormation 堆栈输出中为密钥提供的链接来访问 Amazon EMR Studio EMRStudioURL.
  4. 应用领域无服务器 在导航窗格中。

您将找到一个由 CloudFormation 堆栈创建的 EMR 应用程序,其名称为 emr-spark-redshift.

  1. 选择应用程序名称以提交作业。
  2. 提交作业.
  3. 工作细节,为 名字, 输入作业的可识别名称。
  4. 针对 运行时角色,选择您之前从 CloudFormation 堆栈输出中记下的 IAM 角色。
  5. 针对 脚本位置,提供您之前从 CloudFormation 堆栈输出中记下的 Python 脚本的路径。
  6. 展开部分 火花属性 并选择 在文本中编辑
  7. 在文本框中输入以下值,该值提供了 redshift-connector, Amazon Redshift JDBC 驱动程序, spark-avro 罐子,和 minimal-json 罐文件:
    --jars /usr/share/aws/redshift/jdbc/RedshiftJDBC.jar,/usr/share/aws/redshift/spark-redshift/lib/spark-redshift.jar,/usr/share/aws/redshift/spark-redshift/lib/spark-avro.jar,/usr/share/aws/redshift/spark-redshift/lib/minimal-json.jar

  8. 提交作业.
  9. 等待作业完成,运行状态显示为 成功.
  10. 导航到 Amazon Redshift 查询编辑器以查看表是否已成功创建。
  11. 检查为 Amazon Redshift 查询组运行的下推查询 emr-serverless-redshift. 您可以对数据库运行以下 SQL 语句 dev:
    SELECT query_text FROM SYS_QUERY_HISTORY WHERE query_label = 'emr-serverless-redshift' ORDER BY start_time DESC LIMIT 1

您可以看到下推查询和返回结果以 Parquet 文件格式存储在 Amazon S3 上。

在 AWS Glue 上使用 Amazon Redshift 与 Apache Spark 的集成

从 AWS Glue 版本 4.0 及更高版本开始,连接到 Amazon Redshift 的 Apache Spark 作业可以使用 Apache Spark 和 Amazon Redshift JDBC 驱动程序的 Amazon Redshift 集成。 已经使用 Amazon Redshift 作为源或目标的现有 AWS Glue 作业可以升级到 AWS Glue 4.0 以利用这个新的连接器。 本文提供的 CloudFormation 模板创建了以下 AWS Glue 资源:

  • Amazon Redshift 的 AWS Glue 连接 – 使用 Apache Spark 的 Amazon Redshift 集成建立从 AWS Glue 到 Amazon Redshift 的连接
  • 附加到 AWS Glue 作业的 IAM 角色 – 用于管理运行 AWS Glue 作业的权限的 IAM 角色
  • AWS Glue作业 – AWS Glue 作业的脚本使用 Apache Spark 的 Amazon Redshift 集成执行转换和聚合

以下示例使用 PySpark 附加到 AWS Glue 作业的 AWS Glue 连接,包括以下步骤:

  1. 在 AWS Glue 控制台上,选择 连接 在导航窗格中。
  2. 连接, 选择由 CloudFormation 模板创建的 Amazon Redshift 的 AWS Glue 连接。
  3. 验证连接详细信息。

您现在可以在一个作业中或跨多个作业重用此连接。

  1. 点击 同轴连接器 页面,选择由 CloudFormation 堆栈创建的 AWS Glue 作业 你的职位,或使用为密钥提供的 URL 访问 AWS Glue 作业 GlueJob 在 CloudFormation 堆栈输出中。
  2. 访问并验证 AWS Glue 作业的脚本。
  3. 点击 工作细节 选项卡,确保 胶版 被设置为 胶4.0.

这确保作业使用最新的 redshift-spark 连接器。

  1. 扩大 先进的属性 和在 连接 部分,验证是否附加了 CloudFormation 堆栈创建的连接。
  2. 验证为 AWS Glue 作业添加的作业参数。 这些值也可用于 CloudFormation 堆栈的输出。
  3. 保存 然后 运行.

您可以查看作业运行的状态 运行 标签。

  1. 作业运行成功完成后,您可以验证 AWS Glue 作业创建的表 test-glue 的输出。
  2. 我们检查为 Amazon Redshift 查询组运行的下推查询 glue-redshift. 您可以对数据库运行以下 SQL 语句 dev:
    SELECT query_text FROM SYS_QUERY_HISTORY WHERE query_label = 'glue-redshift' ORDER BY start_time DESC LIMIT 1

最佳实践

请牢记以下最佳实践:

  • 考虑使用来自 Amazon EMR 的 Apache Spark 的 Amazon Redshift 集成,而不是使用 redshift-spark 用于新 Apache Spark 作业的连接器(社区版)。
  • 如果您现有的 Apache Spark 作业使用 redshift-spark 连接器(社区版),考虑升级它们以使用 Apache Spark 的 Amazon Redshift 集成
  • Apache Spark 的 Amazon Redshift 集成自动应用谓词和查询下推以优化性能。 我们建议使用支持的功能(autopushdown) 在您的查询中。 Apache Spark 的 Amazon Redshift 集成会将函数转换为 SQL 查询并在 Amazon Redshift 中运行查询。 这种优化导致所需的数据被检索,因此 Apache Spark 可以处理更少的数据并具有更好的性能。
    • 考虑使用聚合下推函数,例如 avg, count, max, minsum 检索过滤后的数据以进行数据处理。
    • 考虑使用布尔下推运算符,例如 in, isnull, isnotnull, contains, endswithstartswith 检索过滤后的数据以进行数据处理。
    • 考虑使用逻辑下推运算符,例如 and, ornot (或 !) 来检索过滤后的数据以进行数据处理。
  • 建议使用参数传递 IAM 角色 aws_iam_role 从 Amazon EMR 或 AWS Glue 上的 Apache Spark 应用程序进行 Amazon Redshift 身份验证。 IAM 角色应具有必要的权限来检索临时 IAM 凭证以向 Amazon Redshift 进行身份验证,如本博客的“Apache Spark 应用程序中 Apache Spark 的 Amazon Redshift 集成示例”部分所示。
  • 使用此功能,您不必在机密管理器和 Amazon Redshift 数据库中维护您的 Amazon Redshift 用户名和密码。
  • Amazon Redshift 使用 UNLOAD SQL 语句将此临时数据存储在 Amazon S3 上。 Apache Spark 应用程序从临时目录(以 Parquet 文件格式存储)检索结果。 Amazon S3 上的这个临时目录不会自动清理,因此可能会增加额外费用。 我们推荐使用 Amazon S3 生命周期策略 定义 S3 存储桶的保留规则。
  • 建议开启 Amazon Redshift 审计日志记录 在数据库中记录有关连接和用户活动的信息。
  • 建议开启 Amazon Redshift 静态加密 在 Amazon Redshift 将数据写入其数据中心时加密您的数据,并在您访问数据时为您解密。
  • 建议升级到 AWS Glue v4.0 及更高版本以使用 Apache Spark 的 Amazon Redshift 集成,它是开箱即用的。 升级到此版本的 AWS Glue 将自动使用此功能。
  • 建议升级到 Amazon EMR v6.9.0 及更高版本以使用 Apache Spark 的 Amazon Redshift 集成。 您不必显式管理任何驱动程序或 JAR 文件。
  • 考虑使用 Amazon EMR Studio 笔记本与 Apache Spark 应用程序中的 Amazon Redshift 数据进行交互。
  • 考虑使用 AWS Glue Studio 通过可视化界面创建 Apache Spark 作业。 您还可以切换到在 AWS Glue Studio 中使用 Scala 或 PySpark 编写 Apache Spark 代码。

清理

完成以下步骤以清理作为 CloudFormation 模板的一部分创建的资源,以确保在您不再使用这些资源时无需为它们付费:

  1. 停止 Amazon EMR 无服务器应用程序:
    • 通过选择或复制 CloudFormation 堆栈输出中为密钥提供的链接来访问 Amazon EMR Studio EMRStudioURL.
    • 应用领域无服务器 在导航窗格中。

您将找到一个由 CloudFormation 堆栈创建的 EMR 应用程序,其名称为 emr-spark-redshift.

    • 如果应用程序状态显示为已停止,您可以转到后续步骤。 但是,如果应用程序状态为 Started,请选择应用程序名称,然后选择 停止申请停止申请 再次确认。
  1. 删除 Amazon EMR Studio 工作区:
    • 通过选择或复制 CloudFormation 堆栈输出中为密钥提供的链接来访问 Amazon EMR Studio EMRStudioURL.
    • 工作区 在导航窗格中。
    • 选择您创建的工作区并选择 删除,然后选择 删除 再次确认。
  2. 删除 CloudFormation 堆栈:
    • 在 AWS CloudFormation 控制台上,导航到您之前创建的堆栈。
    • 选择堆栈名称,然后选择 删除 删除堆栈并删除作为本文一部分创建的资源。
    • 在确认屏幕上,选择 删除堆栈.

结论

在本文中,我们解释了如何使用 Apache Spark 的 Amazon Redshift 集成在 Amazon EC2、Amazon EMR 无服务器和 AWS Glue 上使用 Amazon EMR 构建和部署应用程序,以自动应用谓词和查询下推以优化数据的查询性能在亚马逊红移。 强烈建议使用 Apache Spark 的 Amazon Redshift 集成,以便从您的 Amazon EMR 或 AWS Glue 无缝且安全地连接到 Amazon Redshift。

以下是我们的一些客户对 Apache Spark 的 Amazon Redshift 集成的评价:

“我们授权我们的工程师使用 Python 和 Scala 通过 Apache Spark 构建他们的数据管道和应用程序。 我们需要一个量身定制的解决方案来简化操作并为我们的客户更快、更高效地交付,而这正是我们通过 Apache Spark 的新 Amazon Redshift 集成获得的。”

—休伦咨询

“GE Aerospace 使用 AWS 分析和 Amazon Redshift 来实现推动重要业务决策的关键业务洞察力。 借助对从 Amazon S3 自动复制的支持,我们可以构建更简单的数据管道,将数据从 Amazon S3 移动到 Amazon Redshift。 这加快了我们的数据产品团队访问数据和向最终用户提供见解的能力。 我们花更多的时间通过数据增加价值,而花更少的时间在集成上。”

——通用航空

“我们的重点是为高盛的所有用户提供自助式数据访问。 通过我们的开源数据管理和治理平台 Legend,我们使用户能够开发以数据为中心的应用程序,并在我们跨金融服务行业开展合作时获得数据驱动的见解。 通过 Apache Spark 的 Amazon Redshift 集成,我们的数据平台团队将能够以最少的手动步骤访问 Amazon Redshift 数据,允许零代码 ETL,这将提高我们的能力,使工程师更容易专注于完善他们的工作流程,因为他们收集完整及时的信息。 我们希望看到应用程序的性能改进和安全性的提高,因为我们的用户现在可以轻松访问 Amazon Redshift 中的最新数据。”

-高盛


作者简介

加根婆罗米 是 Amazon Web Services 的一名高级专家解决方案架构师,专注于大数据分析和 AI/ML 平台。 Gagan 在信息技术领域拥有超过 18 年的经验。 他帮助客户在 AWS 上设计和构建高度可扩展、高性能和安全的基于云的解决方案。 在业余时间,他与​​家人共度时光并探索新的地方。

维维克高塔姆 是一名数据架构师,在 AWS Professional Services 专攻数据湖。 他与企业客户合作,在 AWS 上构建数据产品、分析平台和解决方案。 在构建和设计数据湖之余,Vivek 是一名美食爱好者,他也喜欢探索新的旅游目的地和徒步旅行。

纳雷什·高塔姆 是 AWS 的数据分析和 AI/ML 领导者,拥有 20 年的经验,他乐于帮助客户构建高度可用、高性能且具有成本效益的数据分析和 AI/ML 解决方案,使客户能够做出数据驱动的决策. 在空闲时间,他喜欢冥想和烹饪。

博沙里菲 是 Amazon Redshift 驱动程序团队的一名软件开发工程师,他领导 Amazon Redshift Integration with Apache Spark 连接器的开发。 他在跨多个行业构建数据驱动平台方面拥有超过 20 年的经验。 在业余时间,他喜欢与家人共度时光和冲浪。

时间戳记:

更多来自 AWS 大数据