HDFS的文件上传和下载

本文详细介绍了使用Java API进行HDFS文件操作的方法,包括文件上传、下载、获取文件信息及数据块位置等核心功能实现。

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

Java API获取HDFS的文件信息

1).获取文件属性

环境:Windows Java API
函数:mkdir、FileStatus[]、listStatus、isDirectory

@Test
public void test1() throws Exception{
    //配置HDFS主节点:NameNode
    Configuration conf = new Configuration();
    conf.set("fs.defaultFS","hdfs://192.168.142.111:9000");
    //得到HDFS客户端
    FileSystem fs = FileSystem.get(conf);
    //创建文件夹  /tools/foldder
    fs.mkdir(new Path("/tools/folder"));
    
    //获取文件状态
    FileStatus[] list = fs.listStatus(new Path("/tools"));
    for(FileStatus status:list){
        //获取文件属性
        System.out.println(status.isDirectory?"目录":"文件");
    }
}

执行结果

目录

2).获取数据块信息

环境:Windows Java API
函数:getFileStatus、getFileBlockLocations、getHosts、getNames

@Test
public void test2()throws Exception{
	Configuration conf = new Configuration();
	conf.set("fs.defaultFS", "hdfs://192.168.142.111:9000");
	//获取某个文件的数据块信息
	FileSystem fs = FileSystem.get(conf);
	FileStatus fileStatus = fs.getFileStatus(new Path("/tools/up1.mp4"));
	BlockLocation[] list = fs.getFileBlockLocations(fileStatus,0,fileStatus.getLen());
	for(BlockLocation bl:list){
	    System.out.println(Arrays.toString(bl.getHosts));
	    System.out.println(Arrays.toString(bl.getNames));
	}

Java API获取HDFS的文件上传/下载

1.0文件上传原理
HDFS上传1.1).上传文件至HDFS(Java IO)

环境:Windows Java API
函数:InputStream、FileInputStream、OutputStream、create

@Test
public void upload1() throws Exception {
//1.配置HDFS
    Configuration conf = new Configuration();
    conf.set("fs.defaultFS","hdfs://192.168.142.111:9000");
//2.获取客户端
    FileSystem fs = FileSystem.get(conf);
//3.打开输入流
    InputStream in = new FileInputStream("E:\\java Hadoop\\upfile.mp4");
//4.创建输出端
    OutputStream out = fs.create(new Path("/tools/up1.mp4"));
//5.创建缓存区
    byte[] buffer = new byte[1024];
    int len= 0;
//6.上传文件
    while((len = read(buffer))>0){
        out.write(out,0,len);
    }
    flush();
//7.关闭流
    in.close();
    out.close();
}

1.2).上传文件至HDFS(内置函数)

环境:Windows Java API
函数:InputStream、FileInputStream、OutputStream、create、IOUtils、copyBytes

@Test
public void upload2()throws Exception{
//1.配置HDFS的主节点:NameNode
    Configuration conf = new Configuration();
    conf.set("fs.defaultFS","hdfs://192.168.142.111:9000");
//2.获取客户端
    FileSystem fs = FileSystem.get(conf);
//3.打开输入流
    InputStream input = new FileInputStream("E:\\java Hadoop\\upload1.mp4");
//4.创建输出流
    OutputStream output = fs.create(new Path("/tools/up2.mp4"));
//5.copyByte
    IOUtils.copyBytes(input,output,1024);
    
}

2.1).下载文件至Windows(Java IO) HDFS文件下载原理 HDFS下载

环境:Windows Java API
函数:InputStream、FileInputStream、OutputStream、create、IOUtils、copyBytes

@Test
public void download1()throws Exception{
//1.配置HDFS的主节点:NameNode
    Configuration conf = new Configuration();
    conf.set("fs.defaultFS","hdfs://192.168.142.111:9000");
//2.获取客户端
    FileSystem fs = FileSystem.get(conf);
//3.打开输入流(HDFS)
    InputStream in = fs.open(new Path("/tools/up1.mp4"));
//4.创建输出流
    OutputStream out = new FileOutput("E:\\java Hadoop\\down1.mp4");
//5.创建缓存区
    byte[] buffer = new byte[1024];
    int len = 0;
//6.写入输出流
    while((len = read(buffer))>0){
        out.write(buffer,0,len);
    }
//7.关闭流   
    in.close();
    out.close();
}

2.2).下载文件至Windows(内置函数)

环境:Windows Java API
函数:InputStream、FileInputStream、OutputStream、create、IOUtils、copyBytes

@Test
public void download()throws Expection{
//1.配置HDFS的NameNode
    Configuration conf = new Configuration();
    conf.set("fs.defaultFS","hdfs://192.168.142.111:9000");
//2获取客户端
    FileSystem fs = FileSystem.get(conf);
//3.打开输入流
    InputStream input = fs.open(new Path("/tools/up1.mp4"));
//4.创建输出流
    OutputStream output = new FileOutput("E:\\java Hadoop\\down2.mp4");
//5.文件下载
    IOUtils.copyBytes(input,output,1024);
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值