我试图使用hadoop和s3将文件从本地上传到jets3t,但是我得到了以下错误
Caused by: java.util.concurrent.ExecutionException: org.apache.hadoop.fs.s3.S3Exception: org.jets3t.service.S3ServiceException: Request Error. HEAD '/project%2Ftest%2Fsome_event%2Fdt%3D2015-06-17%2FsomeFile' on Host 'host.s3.amazonaws.com' @ 'Thu, 18 Jun 2015 23:33:01 GMT' -- ResponseCode: 404, ResponseStatus: Not Found, RequestId: AVDFJKLDFJ3242, HostId: D+sdfjlakdsadf\asdfkpagjafdjsafdj
我不明白为什么jets3t需要为上传做一个头请求。因为我上传的文件在s3上还不存在,所以当然不应该被找到。
我假设,因为我有404错误,所以不能是权限问题。
调用此错误的代码是:
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileStatus;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;..。
String path = "s3n://mybucket/path/to/event/partition/file"
Configuration conf = new Configuration();
conf.set("fs.s3n.awsAccessKeyId", "MYACCESSKEY");
conf.set("fs.s3n.awsSecretAccessKey", "MYSECRETKEY");
FileSystem fileSystem = FileSystem.get(URI.create(path), conf);
fileSystem.moveFromLocalFile("my/source/path/to/file", path);发布于 2015-06-23 18:19:00
好吧,我为后人回答这个问题。这个问题其实是有问题的。
我似乎使用了两个框架的不兼容版本。当然,maven是maven,无法检测到这一点。
https://stackoverflow.com/questions/30927835
复制相似问题