Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache spark Spark&x2B;EMRFS/S3—是否有一种方法可以读取客户端加密数据并使用服务器端加密将其写回?_Apache Spark_Amazon S3_Encryption - Fatal编程技术网

Apache spark Spark&x2B;EMRFS/S3—是否有一种方法可以读取客户端加密数据并使用服务器端加密将其写回?

Apache spark Spark&x2B;EMRFS/S3—是否有一种方法可以读取客户端加密数据并使用服务器端加密将其写回?,apache-spark,amazon-s3,encryption,Apache Spark,Amazon S3,Encryption,我在spark中有一个用例,我必须从使用客户端加密的S3读取数据,处理数据,然后仅使用服务器端加密将其写回。我想知道有没有办法在spark中做到这一点 目前,我设置了以下选项: spark.hadoop.fs.s3.cse.enabled=true spark.hadoop.fs.s3.enableServerSideEncryption=true spark.hadoop.fs.s3.serverSideEncryption.kms.keyId=<kms id here> spa

我在spark中有一个用例,我必须从使用客户端加密的S3读取数据,处理数据,然后仅使用服务器端加密将其写回。我想知道有没有办法在spark中做到这一点

目前,我设置了以下选项:

spark.hadoop.fs.s3.cse.enabled=true
spark.hadoop.fs.s3.enableServerSideEncryption=true
spark.hadoop.fs.s3.serverSideEncryption.kms.keyId=<kms id here>
spark.hadoop.fs.s3.cse.enabled=true
spark.hadoop.fs.s3.enableServerSideEncryption=true
spark.hadoop.fs.s3.serverSideEncryption.kms.keyId=
但很明显,它在编写数据时同时使用了CSE和SSE。所以,我想知道是否有可能在读取时只将spark.hadoop.fs.s3.cse.enabled设置为true,然后将其设置为false或其他替代设置


感谢您的帮助。

使用编程配置定义多个S3文件系统:

spark.hadoop.fs.s3.cse.enabled=true
spark.hadoop.fs.s3sse.impl=foo.bar.S3SseFilesystem
然后为
s3sse
添加自定义实现:

package foo.bar

import java.net.URI

import org.apache.hadoop.conf.Configuration
import org.apache.hadoop.fs.s3a.S3AFileSystem

class S3SseFilesystem extends S3AFileSystem {
  override def initialize(name: URI, originalConf: Configuration): Unit = {
    val conf = new Configuration()
    // NOTE: no prefix spark.hadoop here
    conf.set("fs.s3.enableServerSideEncryption", "true")
    conf.set("fs.s3.serverSideEncryption.kms.keyId", "<kms id here>")
    super.initialize(name, conf)
  }
}

使用编程配置定义多个S3文件系统:

spark.hadoop.fs.s3.cse.enabled=true
spark.hadoop.fs.s3sse.impl=foo.bar.S3SseFilesystem
然后为
s3sse
添加自定义实现:

package foo.bar

import java.net.URI

import org.apache.hadoop.conf.Configuration
import org.apache.hadoop.fs.s3a.S3AFileSystem

class S3SseFilesystem extends S3AFileSystem {
  override def initialize(name: URI, originalConf: Configuration): Unit = {
    val conf = new Configuration()
    // NOTE: no prefix spark.hadoop here
    conf.set("fs.s3.enableServerSideEncryption", "true")
    conf.set("fs.s3.serverSideEncryption.kms.keyId", "<kms id here>")
    super.initialize(name, conf)
  }
}

这些不是s3a用户所使用的配置设置(提示:所有小写,所有
fs.s3a
。不知道您扩展了谁的fs,但它不是apache的。此外:s3a不支持S3-CSE,因为字节填充意味着它在历史上不可用。这些配置设置不是s3a用户所使用的(提示:全部小写,全部
fs.s3a
。不知道扩展了谁的fs,但它不是apache的。另外:s3a不支持S3-CSE,因为字节填充意味着它在历史上不可用