首页 > 解决方案 > 在与红移集群和 S3 不同区域的 EC2/EMR 上使用 spark-redshift

问题描述

我们正在使用 spark-redshift 库从我们的 RS 集群中卸载。

S3 存储桶和集群都在 us-west-2 区域中运行。但是,我们的 EMR 正在运行 us-east-1 区域。

我们不断收到必须使用正确端点的错误。

Invalid operation: S3ServiceException:The bucket you are attempting to access must be addressed using the specified endpoint.

如果 S3 与集群位于同一区域,是否有办法从不同区域的 RS 卸载?我不知道在这种情况下有任何硬性限制。这是我们的卸载命令:

var df = spark.read.format("com.databricks.spark.redshift")
  .option("url", "jdbc:redshift://URL")
  .option("query", "(SELECT count(*) from TABLE)")
  .option("tempdir","s3a://WESTBUCKET/PATH")
  .option("region","us-west-2").load

标签: apache-sparkamazon-s3amazon-redshift

解决方案


Redshift 4789 版本会将 REGION 选项添加到 UNLOAD 语句中,因此您可以指定存储桶区域。

Amazon Redshift:添加了对带有 REGION 参数的跨区域 UNLOAD 的支持。

https://docs.aws.amazon.com/redshift/latest/mgmt/rs-mgmt-cluster-version-notes.html#rs-mgmt-cluster-version-notes-104515

您的集群很可能会在为此版本指定的时间段内的一个维护时段内升级到此版本。


推荐阅读