使用 pyspark 读取 KMS 加密 Spark 数据帧并将其写入 S3 存储桶时出现问题

2024-01-20

我正在尝试使用 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 回复,这意味着某些内容被拒绝了。

推荐

  1. 你看看s3a 页面故障排除 http://hadoop.apache.org/docs/current3/hadoop-aws/tools/hadoop-aws/troubleshooting_s3a.html
  2. 下载云存储 https://github.com/steveloughran/cloudstore并运行其storediag来引导连接诊断
  3. 尝试使用 AWS CLI 使用相同的设置处理数据

注意:当您尝试读取数据时,fs.s3a.encryption 设置是什么并不重要 -S3 知道使用的 KMS 密钥,如果您有权限,将自动使用它来解密。这是检查您是否具有密钥读取权限的好方法

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 pyspark 读取 KMS 加密 Spark 数据帧并将其写入 S3 存储桶时出现问题 的相关文章

随机推荐