我尝试在我的 Spark 作业中使用 s3 magic committer 在 s3 存储桶上写入数据,但最终失败,而在下面的目的地提交文件时出现错误
原因:com.amazonaws.services.s3.model.AmazonS3Exception:您指定的 Content-MD5 与我们收到的内容不匹配。 (服务:Amazon S3;状态代码:400;错误代码:BadDigest;请求 ID:1689881089086345;S3 扩展请求 ID:null;代理:null),S3 扩展请求 ID:null 在 com.amazonaws.http.AmazonHttpClient$RequestExecutor.handleErrorResponse(AmazonHttpClient.java:1879) 在 com.amazonaws.http.AmazonHttpClient$RequestExecutor.handleServiceErrorResponse(AmazonHttpClient.java:1418) 在 com.amazonaws.http.AmazonHttpClient$RequestExecutor.executeOneRequest(AmazonHttpClient.java:1387) 在 com.amazonaws.http.AmazonHttpClient$RequestExecutor.executeHelper(AmazonHttpClient.java:1157) 在 com.amazonaws.http.AmazonHttpClient$RequestExecutor.doExecute(AmazonHttpClient.java:814) 在 com.amazonaws.http.AmazonHttpClient$RequestExecutor.executeWithTimer(AmazonHttpClient.java:781) 在 com.amazonaws.http.AmazonHttpClient$RequestExecutor.execute(AmazonHttpClient.java:755) 在 com.amazonaws.http.AmazonHttpClient$RequestExecutor.access$500(AmazonHttpClient.java:715) 在 com.amazonaws.http.AmazonHttpClient$RequestExecutionBuilderImpl.execute(AmazonHttpClient.java:697) 在 com.amazonaws.http.AmazonHttpClient.execute(AmazonHttpClient.java:561) 在 com.amazonaws.http.AmazonHttpClient.execute(AmazonHttpClient.java:541) 在 com.amazonaws.services.s3.AmazonS3Client.invoke(AmazonS3Client.java:5456) 在 com.amazonaws.services.s3.AmazonS3Client.invoke(AmazonS3Client.java:5403) 在 com.amazonaws.services.s3.AmazonS3Client.access 300 美元(AmazonS3Client.java:421) 在 com.amazonaws.services.s3.AmazonS3Client$PutObjectStrategy.invokeServiceCall(AmazonS3Client.java:6531) 在 com.amazonaws.services.s3.AmazonS3Client.uploadObject(AmazonS3Client.java:1861) 在 com.amazonaws.services.s3.AmazonS3Client.putObject(AmazonS3Client.java:1821) 在 org.apache.hadoop.fs.s3a.S3AFileSystem.putObjectDirect(S3AFileSystem.java:2432) 在 org.apache.hadoop.fs.s3a.WriteOperationHelper.lambda$putObject$6(WriteOperationHelper.java:517) 在 org.apache.hadoop.fs.s3a.Invoker.once(Invoker.java:115) ...还有15个
我尝试使用 s3 magic committer 提交数据
计算出的上传 MD5 校验和(作为标头附加到要提交该任务的所有文件的 .pendingset JSON 列表的 PUT 中),与 AWS 获得的内容不匹配。
我认为存在某种形式的网络问题,或与 HTTPS 相关。
现在,请求ID是一个简单的数字
Request ID: 1689881089086345; S3 Extended Request ID: null;
这不是 AWS S3 请求 ID,它始终是 UUID。这意味着您正在使用一些第三方商店。
与 s3 商店的作者交谈。如果这是可复制的,那么知道它是谁的商店会很有趣,尽管 s3a 代码库的总体观点是 我们不会阻止第 3 方实现,但希望他们能够解决自己的兼容性问题