我正在使用AWS EMR 5.0,Spark 2.0,Scala 2.11,S3 - 使用KMS(SSE自定义密钥)加密,Parquet文件。我可以阅读加密的镶木地板文件 - 没问题。但是,当我写作时,我会收到警告。简化代码如下:
val headerHistory = spark.read.parquet("s3://<my bucket>/header_1473640645")
headerHistory.write.parquet("s3://<my bucket>/temp/")
但会生成警告:
16/09/15 13:11:11 WARN S3V4AuthErrorRetryStrategy:尝试使用AWS V4身份验证将请求重新发送到我的bucket.s3.amazonaws.com。为避免将来出现此警告,请使用特定于区域的端点来访问位于需要V4签名的区域中的存储桶。
我需要一个选项吗?我需要设置一些环境变量吗?
答案 0 :(得分:1)
感谢您提供其他详细信息。
是的,当使用EMRFS(用于s3通信的引擎库)时,KMS + SSE是一个已知问题。
问题是当启用服务器端加密+ kms时,emrfs中的s3client会在不指定签名者类型的情况下制作请求。 以保守的方式,s3最初会尝试V2,然后在第一次尝试失败时使用V4重试。这种行为会减慢整个过程。 EMRFS将在第一次尝试时使用V4进行修补,这应该在下一个EMR版本中修复。
如上所述,它并没有打破这份工作。
请留意emr-5.x(没有ETA)
https://docs.aws.amazon.com/ElasticMapReduce/latest/ReleaseGuide/emr-whatsnew.html