hadoop java api操作实战:
公共方法:
-
static final String PATH = "hdfs://icity0:9000/";
-
private static FileSystem getFileSystem() throws IOException, URISyntaxException {
-
FileSystem fileSystem = FileSystem.get(new URI(PATH), new Configuration());
-
return fileSystem;
-
}
创建目录:
-
FileSystem fileSystem = getFileSystem();
-
-
fileSystem.mkdirs(new Path("/wangmm1"));
将本地文件上传到hdfs中:
-
fileSystem.copyFromLocalFile(new Path("src/t.txt"), new Path("hdfs://icity0:9000/wangmm1/"));
将hdfs中的文件读取到本地控制台:
-
FSDataInputStream open = fileSystem.open(new Path("hdfs://icity0:9000/wangmm1/t.txt"));
-
-
IOUtils.copyBytes(open, System.out, 1024, true);
遍历hdfs上的文件夹:
-
FileStatus[] listStatus = fileSystem.listStatus(new Path(PATH));
-
for (int i = 0; i < listStatus.length; i++) {
-
FileStatus fileStatus = listStatus[i];
-
boolean dir = fileStatus.isDir();
-
if(dir) {
-
System.out.println("文件夹"+fileStatus.getPath().toUri().getPath());
-
}else{
-
System.out.println("文件"+fileStatus.getPath().toUri().getPath());
-
}
-
}
打印结果:
文件/hello
文件夹/home
文件夹/wangmm1
删除目录或者文件:
-
fileSystem.delete(new Path("/wangmm1"), true);
如果wangmm1是目录,且目录下面存在文件,第二个参数设置为false,那么执行此方法会抛异常。
设置为true时,直接删除目录及其下面的所有文件。
如果删除文件:
-
[hadoop@icity0 ~]$ hadoop fs -lsr /wangmm1
-
Warning: $HADOOP_HOME is deprecated.
-
-
-rw-r--r-- 3 wangmuming supergroup 18 2014-04-15 20:47 /wangmm1/t.txt
则直接删除,
-
fileSystem.delete(new Path("/wangmm1/t.txt"), true);
第二个参数是true或者false都可以。
关于hadoop的java api操作还有许多方法,这里只讲解了基础的结果操作,具体的可以参考hadoop java api。
(责任编辑:IT) |