我所要做的就是在编程上使用Java在HDFS中创建一个目录。 我收到此错误。螺纹 异常 “主要” java.util.ServiceConfigurationError:org.apache.hadoop.fs.FileSystem:提供org.apache.hadoop.fs.s3a.S3AFileSystem无法实例Hadoop 2.7 - 在HDFS中创建目录的简单Java代码
产生的原因:java.lang中。 NoClassDefFoundError:com/amazonaws/AmazonServiceException 导致:java.lang.ClassNotFoundException:com.amazonaws.AmazonServiceException
不确定这里所有这些Amazon S3来自哪里。请帮忙。
这是代码。这是Hadoop的2.7
package tas.module1;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.BlockLocation;
import org.apache.hadoop.fs.FSDataInputStream;
import org.apache.hadoop.fs.FSDataOutputStream;
import org.apache.hadoop.fs.FileStatus;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
public class JavaClient {
public JavaClient() {
}
public static void main(String[] args) throws IOException {
JavaClient jc = new JavaClient();
Configuration config = new Configuration();
config.addResource(new Path("/usr/local/hadoop-2.7.1/etc/hadoop/core-site.xml"));
config.addResource(new Path("/usr/local/hadoop-2.7.1/etc/hadoop/hdfs-site.xml"));
config.set("fs.hdfs.impl",
org.apache.hadoop.hdfs.DistributedFileSystem.class.getName()
);
config.set("fs.file.impl",
org.apache.hadoop.fs.LocalFileSystem.class.getName()
);
FileSystem dfs = FileSystem.get(config);
String dirName = "TestDirectory";
System.out.println(dfs.getWorkingDirectory() +" this is from /n/n");
Path src = new Path(dfs.getWorkingDirectory()+"/"+dirName);
dfs.mkdirs(src);
System.out.println("created dir");
dfs.close();
}
}
嗨, 感谢您的答复。 问题是为什么我得到这个AWS S3相关的错误消息,因为我的hadoop伪集群是本地的,我所尝试的是使用java程序在HDFS中创建一个文件夹。 我的Hadoop在Ubuntu 14的本地虚拟机中。 – Suri