Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon web services AWS错误消息:使用AWS KMS托管密钥指定服务器端加密的请求需要AWS签名版本4_Amazon Web Services_Encryption_Pyspark_Server Side_Aws Kms - Fatal编程技术网

Amazon web services AWS错误消息:使用AWS KMS托管密钥指定服务器端加密的请求需要AWS签名版本4

Amazon web services AWS错误消息:使用AWS KMS托管密钥指定服务器端加密的请求需要AWS签名版本4,amazon-web-services,encryption,pyspark,server-side,aws-kms,Amazon Web Services,Encryption,Pyspark,Server Side,Aws Kms,在使用pyspark写入S3存储桶时,我面临以下错误 com.amazonaws.services.s3.model.amazons3异常:状态代码:400,AWS服务:Amazon s3,AWS请求ID:A0B0C0000000DEF0,AWS错误代码:InvalidArgument,AWS错误消息:使用AWS KMS托管密钥指定服务器端加密的请求需要AWS签名版本4 我已经在S3存储桶上使用AWS KMS服务应用了服务器端加密。 我正在使用以下spark submit命令- spark-su

在使用pyspark写入S3存储桶时,我面临以下错误

com.amazonaws.services.s3.model.amazons3异常:状态代码:400,AWS服务:Amazon s3,AWS请求ID:A0B0C0000000DEF0,AWS错误代码:InvalidArgument,AWS错误消息:使用AWS KMS托管密钥指定服务器端加密的请求需要AWS签名版本4

我已经在S3存储桶上使用AWS KMS服务应用了服务器端加密。 我正在使用以下spark submit命令-

spark-submit --packages com.amazonaws:aws-java-sdk-pom:1.10.34,org.apache.hadoop:hadoop-aws:2.7.2 --jars sample-jar sample_pyspark.py 
这是我正在编写的示例代码-

spark_context = SparkContext()
sql_context = SQLContext(spark_context) 
spark = SparkSession.builder.appName('abc').getOrCreate()
hadoopConf = spark_context._jsc.hadoopConfiguration()
hadoopConf.set("fs.s3a.impl", "org.apache.hadoop.fs.s3a.S3AFileSystem")
#Have a spark dataframe 'source_data
source_data.coalesce(1).write.mode('overwrite').parquet("s3a://sample-bucket")

注意:尝试将spark数据帧加载到s3存储桶[未启用服务器端加密]并成功

错误似乎告诉您在Amazon SDK上启用V4 s3签名。一种方法是从命令行执行:

spark-submit --conf spark.driver.extraJavaOptions='-Dcom.amazonaws.services.s3.enableV4' \
    --conf spark.executor.extraJavaOptions='-Dcom.amazonaws.services.s3.enableV4' \
    ... (other spark options)
也就是说,我同意Steve的观点,您应该使用更新的hadoop库

参考文献:


您使用的是一个有五年历史的s3a连接器。尝试在hadoop-3.1二进制文件中使用spark版本,看看会发生什么。解决方案: