hadoop hdfs java api操作实战

10 篇文章 0 订阅

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。


  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值