使用 magic s3 提交者的 Spark 作业在处理输出路径中 _magic 目录内的 .pendingset 文件时失败

问题描述 投票:0回答:1

我尝试在我的 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 提交数据

apache-spark amazon-s3 hadoop
1个回答
0
投票

计算出的上传 MD5 校验和(作为标头附加到要提交该任务的所有文件的 .pendingset JSON 列表的 PUT 中),与 AWS 获得的内容不匹配。

我认为存在某种形式的网络问题,或与 HTTPS 相关。

现在,请求ID是一个简单的数字

Request ID: 1689881089086345; S3 Extended Request ID: null;

这不是 AWS S3 请求 ID,它始终是 UUID。这意味着您正在使用一些第三方商店。

与 s3 商店的作者交谈。如果这是可复制的,那么知道它是谁的商店会很有趣,尽管 s3a 代码库的总体观点是 我们不会阻止第 3 方实现,但希望他们能够解决自己的兼容性问题

另请参阅:https://hadoop.apache.org/docs/stable/hadoop-aws/tools/hadoop-aws/troubleshooting_s3a.html#SdkClientException_Unable_to_verify_integrity_of_data_upload

© www.soinside.com 2019 - 2024. All rights reserved.