jets3t无法将文件上传到s3

时间:2015-06-19 00:00:09

标签: hadoop amazon-s3 jets3t

我尝试使用hadoop fs和jets3t将文件从本地上传到s3,但我收到以下错误

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需要为上传做一个HEAD请求。由于我上传的文件还没有在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);

1 个答案:

答案 0 :(得分:0)

好吧,我为后人回答这个问题。问题实际上是maven。

似乎我使用的是两个框架的不兼容版本。当然maven是maven,无法察觉。