hadoop hdfs java api操作实战

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。


你可能感兴趣的:(JAVA,hadoop,hadoop,API,java,hdfs)