hadoop-hdfs初学之基本常用命令的IDEA实现

刚开始学hadoop,大家一起加油,再接再厉

package com.atguigu.hdfs;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.*;
import org.junit.Test;

import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;
import java.text.SimpleDateFormat;
import java.util.Arrays;
import java.util.Date;

public class HdfsClient {

		@Test
		public void testMkdirs() throws IOException, URISyntaxException, InterruptedException {

			// 1 获取文件系统
			Configuration configuration = new Configuration();

			// FileSystem fs = FileSystem.get(new URI("hdfs://hadoop102:8020"), configuration);
			FileSystem fs = FileSystem.get(new URI("hdfs://hadoop102:8020"), configuration,"atguigu");

			// 2 创建目录
			fs.mkdirs(new Path("/xiyou/huaguoshan/"));

			// 3 关闭资源
			fs.close();
		}

	//3.2.1 HDFS文件上传(测试参数优先级)
	@Test
	public void testCopyFromLocalFile() throws IOException, InterruptedException, URISyntaxException {

		// 1 获取文件系统
		Configuration configuration = new Configuration();
		configuration.set("dfs.replication", "2");
		FileSystem fs = FileSystem.get(new URI("hdfs://hadoop102:8020"), configuration, "atguigu");

		// 2 上传文件
		fs.copyFromLocalFile(new Path("F:/local_text/00.txt"), new Path("/xiyou/huaguoshan"));

		// 3 关闭资源
		fs.close();
	}

	//3.2.2 HDFS文件下载
	@Test
	public void testCopyToLocalFile() throws IOException, InterruptedException, URISyntaxException {

		// 1 获取文件系统
		Configuration configuration = new Configuration();
		FileSystem fs = FileSystem.get(new URI("hdfs://hadoop102:8020"), configuration, "atguigu");

		// 2 执行下载操作
		// boolean delSrc 指是否将原文件删除
		// Path src 指要下载的文件路径
		// Path dst 指将文件下载到的路径
		// boolean useRawLocalFileSystem 是否开启文件校验
		fs.copyToLocalFile(false, new Path("/xiyou/huaguoshan/sunwukong.txt"), new Path("F:/local_text/Y23M03"), true);

		// 3 关闭资源
		fs.close();
	}


	//3.2.3 HDFS文件更名和移动
	@Test
	public void testRename() throws IOException, InterruptedException, URISyntaxException{

		// 1 获取文件系统
		Configuration configuration = new Configuration();
		FileSystem fs = FileSystem.get(new URI("hdfs://hadoop102:8020"), configuration, "atguigu");

		// 2 修改文件名称
		fs.rename(new Path("/xiyou/huaguoshan/sunwukong.txt"), new Path("/xiyou/huaguoshan/自己手动修改名称.txt"));

		// 3 关闭资源
		fs.close();
	}

	//3.2.4 HDFS删除文件和目录
	@Test
	public void testDelete() throws IOException, InterruptedException, URISyntaxException{

		// 1 获取文件系统
		Configuration configuration = new Configuration();
		FileSystem fs = FileSystem.get(new URI("hdfs://hadoop102:8020"), configuration, "atguigu");

		// 2 执行删除
		fs.delete(new Path("/xiyou"), true);

		// 3 关闭资源
		fs.close();
	}

	//3.2.5 HDFS文件详情查看
	@Test
	public void testListFiles() throws IOException, InterruptedException, URISyntaxException {

		// 1获取文件系统
		Configuration configuration = new Configuration();
		FileSystem fs = FileSystem.get(new URI("hdfs://hadoop102:8020"), configuration, "atguigu");

		// 2 获取文件详情
		RemoteIterator<LocatedFileStatus> listFiles = fs.listFiles(new Path("/xiyou/huaguoshan"), true);

		while (listFiles.hasNext()) {
			LocatedFileStatus fileStatus = listFiles.next();
			System.out.println("**************************************************************************************");
			System.out.println("文件路径以及当前处理的文件名称");
			System.out.println("========" + fileStatus.getPath() + "=========");
			System.out.println("文件类型及其UserGroupOther权限:");
			System.out.println(fileStatus.getPermission());
			System.out.println("文件的所有人:");
			System.out.println(fileStatus.getOwner());
			System.out.println("文件的所属组:");
			System.out.println(fileStatus.getGroup());
			System.out.println("文件大小(单位B):");
			System.out.println(fileStatus.getLen());
			System.out.println("文件的修改时间--距离格林威治:");
			System.out.println(fileStatus.getModificationTime());
			System.out.println(timechange());
			System.out.println("当前处理该文件的Replication块的编号");
			System.out.println(fileStatus.getReplication());
			System.out.println("该文件处所的内存块大小");
			System.out.println(fileStatus.getBlockSize());
			System.out.println("文件名");
			System.out.println(fileStatus.getPath().getName());

			// 获取块信息
			BlockLocation[] blockLocations = fileStatus.getBlockLocations();
			System.out.println(Arrays.toString(blockLocations));
		}
		// 3 关闭资源
		fs.close();
	}

	public static int timechange(){
		Date date = new Date();
		Long time = date.getTime();
		//System.out.println(time);
		Date d = new Date(time);
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");
		System.out.println(sdf.format(d));
		return 0;
	}

	//3.2.6 HDFS文件和文件夹判断
	@Test
	public void testListStatus() throws IOException, InterruptedException, URISyntaxException{

		// 1 获取文件配置信息
		Configuration configuration = new Configuration();
		FileSystem fs = FileSystem.get(new URI("hdfs://hadoop102:8020"), configuration, "atguigu");

		// 2 判断是文件还是文件夹
		FileStatus[] listStatus = fs.listStatus(new Path("/"));

		for (FileStatus fileStatus : listStatus) {

			// 如果是文件
			if (fileStatus.isFile()) {
				System.out.println("f:"+fileStatus.getPath().getName());
			}else {
				System.out.println("d:"+fileStatus.getPath().getName());
			}
		}

		// 3 关闭资源
		fs.close();
	}

}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值