我正在尝试使用 Pyspark 将 Spark 数据帧写入 AWS S3 存储桶,但出现不支持指定的加密方法的异常。该存储桶具有服务器端加密设置。
我从spark-default.conf运行以下包:
Spark.jars.packages com.amazonaws:aws-java-sdk:1.9.5, org.apache.hadoop:hadoop-aws:3.2.0
回顾了这个现有的线程:Spark/Hadoop 不支持 AWS S3 上的 SSE-KMS 加密 https://stackoverflow.com/questions/46168680/doesnt-spark-hadoop-support-sse-kms-encryption-on-aws-s3并且提到上述版本应该支持SSE-KMS加密。
我还包含了 core-site.xml 以获得该属性
“fs.s3a.服务器端加密算法”设置为“SSE-KMS”
但是,我仍然收到错误。
请注意,对于没有 SSE-KMS 的存储桶,这可以正常工作。
错误消息:AmazonS3Exception:状态代码:400、AWS 服务:Amazon S3、AWS 错误代码:InvalidArgument、AWS 错误消息:不支持指定的加密方法
Hadoop 3.2.0 绝对支持 SSE-KMS,因此无论问题是什么,都会出现:配置中使用的 SSE-KMS 密钥、您访问它的权限或其他一些怪癖(例如密钥不在同一个文件中)区域作为桶)。
但是:该版本是针对 AWS 1.11.375 构建的mvnrepo hadoop-aws https://mvnrepository.com/artifact/org.apache.hadoop/hadoop-aws/3.2.0。混合 JAR 通常是注定要失败的。这可能是一个因素,也可能不是。
您从远端收到了 400 回复,这意味着某些内容被拒绝了。
推荐
- 你看看s3a 页面故障排除 http://hadoop.apache.org/docs/current3/hadoop-aws/tools/hadoop-aws/troubleshooting_s3a.html
- 下载云存储 https://github.com/steveloughran/cloudstore并运行其storediag来引导连接诊断
- 尝试使用 AWS CLI 使用相同的设置处理数据
注意:当您尝试读取数据时,fs.s3a.encryption 设置是什么并不重要 -S3 知道使用的 KMS 密钥,如果您有权限,将自动使用它来解密。这是检查您是否具有密钥读取权限的好方法
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)