Tariq Mohammad created HADOOP-12420: ---------------------------------------
Summary: While trying to access Amazon S3 through hadoop-aws(Spark basically) I was getting Exception in thread "main" java.lang.NoSuchMethodError: com.amazonaws.services.s3.transfer.TransferManagerConfiguration.setMultipartUploadThreshold(I)V Key: HADOOP-12420 URL: https://issues.apache.org/jira/browse/HADOOP-12420 Project: Hadoop Common Issue Type: Improvement Components: fs/s3 Affects Versions: 2.7.1 Reporter: Tariq Mohammad Assignee: Tariq Mohammad Priority: Minor While trying to access data stored in Amazon S3 through Apache Spark, which internally uses hadoop-aws jar I was getting the following exception : Exception in thread "main" java.lang.NoSuchMethodError: com.amazonaws.services.s3.transfer.TransferManagerConfiguration.setMultipartUploadThreshold(I)V Probable reason could be the fact that aws java sdk expects a long parameter for the setMultipartUploadThreshold(long multiPartThreshold) method, but hadoop-aws was using a parameter of type int(multiPartThreshold). I tried using the downloaded hadoop-aws jar and the build through its maven dependency, but in both the cases I encountered the same exception. Although I can see private long multiPartThreshold; in hadoop-aws GitHub repo, it's not getting reflected in the downloaded jar or in the jar created from maven dependency. Following lines in the S3AFileSystem class create this difference : Build from trunk : private long multiPartThreshold; this.multiPartThreshold = conf.getLong("fs.s3a.multipart.threshold", 2147483647L); => Line 267 Build through maven dependency : private int multiPartThreshold; multiPartThreshold = conf.getInt(MIN_MULTIPART_THRESHOLD, DEFAULT_MIN_MULTIPART_THRESHOLD); => Line 249 -- This message was sent by Atlassian JIRA (v6.3.4#6332)