【问题标题】:spark read from different account s3 and write to my account s3spark从不同的帐户s3读取并写入我的帐户s3
【发布时间】:2018-11-09 23:41:20
【问题描述】:

我有 spark 作业,需要从其他帐户**(数据帐户)** 中的 s3 读取数据并处理该数据。

一旦处理完毕,它应该写回我帐户中的 s3。

所以我在我的 spark 会话中配置了 “数据帐户” 的访问权限和密钥,如下所示

val hadoopConf=sc.hadoopConfiguration
hadoopConf.set("fs.s3a.access.key","DataAccountKey")
hadoopConf.set("fs.s3a.secret.key","DataAccountSecretKey") 
hadoopConf.set("fs.s3a.endpoint", "s3.ap-northeast-2.amazonaws.com")
System.setProperty("com.amazonaws.services.s3.enableV4", "true")

val df = spark.read.json("s3a://DataAccountS/path")
/* Reading is success */

df.take(3).write.json("s3a://myaccount/test/")

这个读数很好,但我在写作时遇到错误。

com.amazonaws.services.s3.model.AmazonS3Exception: Status Code: 301, AWS Service: Amazon S3, AWS Request ID: A5E574113745D6A0, AWS Error Code: PermanentRedirect, AWS Error Message: The bucket you are attempting to access must be addressed using the specified endpoint. Please send all future requests to this endpoint.

但如果我不配置数据帐户的详细信息并尝试从 spark 将一些虚拟数据写入我的 s3,它就可以工作。

那么我应该如何配置以使从不同帐户 s3 读取和写入我的帐户 s3 都可以工作

【问题讨论】:

标签: amazon-web-services amazon-s3 amazon-iam


【解决方案1】:

如果您的 spark 类路径启用了 hadoop-2.7 JAR,则可以使用 secrets-in-Paths 作为技术,因此使用像 s3a://DataAccountKey:DataAccountSecretKey/DataAccount/path 这样的 URL。请注意,这将在各处记录秘密。

Hadoop 2.8+ JAR 会告诉你不要在任何地方记录你的秘密,但会增加每个桶的绑定

spark.hadoop.fs.s3a.bucket.DataAccount.access.key DataAccountKey spark.hadoop.fs.s3a.bucket.DataAccount.secret.key DataAccountSecretKey spark.hadoop.fs.s3a.bucket.DataAccount.endpoint s3.ap-northeast-2.amazonaws.com

那么对于与该存储桶的所有交互,这些每个存储桶的选项将覆盖主要设置。

注意:如果你想使用它,不要认为将 hadoop-aws-2.8.jar 放到你的类路径中会起作用,你只会得到类路径错误。所有 hadoop-* JAR 都需要升级到 2.8 并且 aws-sdk 也需要更新。

【讨论】:

  • 我正在使用 Horton 集群,因此将 hadoop-* JAR 更新到 2.8 将是一项艰巨的工作。如果我配置 s3 存储桶策略,有什么方法可以工作?
  • 是的!正如我在上面的评论中所写 - 您可以授予对您的存储桶的权限。请参阅 AWS 文档:docs.aws.amazon.com/AmazonS3/latest/dev/…
  • @user3607698 如果您使用的是 HDP2.6,那么每个桶的东西已经在
  • @stevel 你是救生员,谢谢。如果您正在寻找官方文档,这里是:hadoop.apache.org/docs/stable/hadoop-aws/tools/hadoop-aws/…
  • @NameNotFoundException 很高兴听到!如果您正在尝试调试配置,请获取我的 cloudstore jar 并使用它的 storediag 工具,它不仅(安全地)打印解析的值,它还显示它们来自github.com/steveloughran/cloudstore
猜你喜欢
  • 2021-12-18
  • 1970-01-01
  • 2019-04-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-15
相关资源
最近更新 更多