У меня есть искровое задание, в котором необходимо прочитать данные из s3, находящиеся в другом аккаунте ** (Data Account) **, и обработать эти данные.
как только его обработают, он должен записать обратно в s3, который находится в моем аккаунте.
Поэтому я настроил доступ и секретный ключ «Учетная запись данных» , как показано ниже в моей сеансе зажигания
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.
но если я не настрою детали учетной записи и попытаюсь записать некоторые фиктивные данные в мой s3 от spark, это сработает.
Так как мне настроить, чтобы работали как чтение из другого аккаунта s3, так и запись в мой аккаунт s3