hadoop学习之JavaAPI

本文详细介绍了如何使用Hadoop的Maven依赖进行HDFS文件系统的操作,包括连接HDFS、创建文件、查看文件信息、目录操作等API命令,并提供了具体的代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.首先需要引入hadoop的maven依赖

        <dependency>
            <groupId>org.apache.hadoop</groupId>
            <artifactId>hadoop-common</artifactId>
            <version>2.7.4</version>
        </dependency>
        <dependency>
            <groupId>org.apache.hadoop</groupId>
            <artifactId>hadoop-hdfs</artifactId>
            <version>2.7.4</version>
        </dependency>
        <dependency>
            <groupId>org.apache.hadoop</groupId>
            <artifactId>hadoop-client</artifactId>
            <version>2.7.4</version>
        </dependency>

2.连接到hdfs文件系统

//创建一个配置类
Configuration conf = new Configuration();

//创建一个访问hdfs的客户端对象
FileSystem fs = FileSystem.get(new URI("hdfs://hadoop-node1:9000"), conf, "root"); //指定用户

3.API命令
文件创建

fs.creat(new path("/user/yang/a.txt"))

查看所有的文件


Configuration conf = new Configuration();

//创建一个访问hdfs的访问对象
FileSystem fs = FileSystem.get(new URI("hdfs://hadoop-node1:9000"), conf, "root");

//得到所有的文件
RemoteIterator<LocatedFileStatus> list = fs.listFiles(new Path("/"), true);
while(list.hasNext())
{
     	 //显示其中一个文件
		LocatedFileStatus next = list.next();
		//文件的名字
		System.out.println(next.getPath().getName());
		//得到块的大小
		System.out.println(next.getBlockSize());
		//得到文件的读写权限
		System.out.println(next.getPermission());
		//获取文件的所有者
		System.out.println(next.getOwner());
		//得到文件的大小
		System.out.println(next.getLen());

		BlockLocation[] locations = next.getBlockLocations();

		for (BlockLocation location : locations) {
				//block-length表示块的大小,block-offset表示偏移量
				System.out.println("block-length"+location.getLength()+",block-offset"+location.getOffset());
				String[] hosts = location.getHosts();
				for (String host : hosts) {
			//查看备份的所在主机
				System.out.println(host);
		}
}

System.out.println("-----------------------------------");
}

查看当前的文件和文件夹

Configuration conf = new Configuration();

FileSystem fs = FileSystem.get(new URI("hdfs://hadoop-node1:9000"), conf, "root");

FileStatus[] listStatus = fs.listStatus(new Path("/"));


String flag="f--";
for (FileStatus status : listStatus) {
if(status.isFile())
{
		flag="f--";
}
else {
		flag="d--";
}
System.out.println(flag+status.getPath().getName());
System.out.println(status.getPermission())

目录操作

创建目录
     fs.mkdirs(new Path("/user/yang/java-test"));
删除目录
     fs.delete(new Path("/user/yang/test"),true);//true表示递归删除
重命名目录
     fs.rename(new Path("/user/yang/test"),new Path("/user/yang/test01"));
   //前面的是原来的名字,后面是要改的名字
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值