Spark + EMRFS / S3 - есть ли способ прочитать зашифрованные данные на стороне клиента и записать их обратно с использованием шифрования на стороне сервера? - PullRequest
0 голосов
/ 13 июля 2020

У меня есть пример использования в Spark, когда мне нужно читать данные с S3, который использует шифрование на стороне клиента, обрабатывать их и записывать обратно, используя только шифрование на стороне сервера. Мне интересно, есть ли способ сделать это в Spark? данные. Итак, мне интересно, возможно ли каким-то образом установить для spark.had oop .fs.s3.cse.enabled значение true во время чтения, а затем установить его на false или, возможно, другую альтернативу.

Спасибо за помощь.

1 Ответ

0 голосов
/ 13 июля 2020

Использование конфигурации программы c для определения нескольких файловых систем 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)
  }
}

После этого пользовательский файл система может использоваться с Spark read method

spark.read.json("s3sse://bucket/prefix")
...