您的位置:首页 > 编程语言 > Java开发

hadoop hdfs java api操作实战

2014-04-15 20:50 204 查看
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。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: