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

标签 pyspark

我尝试使用 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

查看了此现有线程:Doesn't 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 key 、您访问它的权限或其他一些怪癖(例如 key 不是与存储桶位于同一区域)。

但是:该版本是针对 AWS 1.11.375 mvnrepo hadoop-aws 构建的。混合 JAR 通常是注定要失败的。这可能是一个因素,也可能不是。

您从远端收到了 400 回复,这意味着某些内容被拒绝了。

推荐

  1. 你看troubleshooting s3a page
  2. 下载 cloudstore并运行其storediag来引导连接诊断
  3. 尝试使用 AWS CLI 使用相同的设置处理数据

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

关于pyspark - 使用 pyspark 读取 KMS 加密 Spark 数据帧并将其写入 S3 存储桶时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56797778/

相关文章:

apache-spark - Spark 重新分区落入单个分区

python - Pyspark 以混合条件加入

python - 将数组列转换为 PySpark 数据框中的结构数组

azure - Synapse Spark 写入不同/安装点[或]容器

random - Pyspark-为可重现值设置随机种子

python - 在开发 Spark 应用程序时使用多种语言

python - 在 pyspark -pandas_udf 中按组应用函数(没有名为 pyarrow 的模块)

apache-spark - 在pyspark lambda映射函数中使用keras模型

python - key 错误 : 'SPARK_HOME' in pyspark

apache-spark - pyspark 数据框过滤器或基于列表包含