hdfs文件重命名java_Java API操作HDFS文件系统

本文展示了如何使用Java API进行HDFS文件系统操作,包括创建目录、写入文件、读取文件、重命名文件、上传下载文件、删除文件及查看目录内容。代码示例详细说明了每个操作的实现过程。
摘要由CSDN通过智能技术生成

在IDEA中,通过MAVEN来创建工程,并配置端口。

package hadoop.hdfs;

import org.apache.hadoop.conf.Configuration;

import org.apache.hadoop.fs.*;

import org.apache.hadoop.io.IOUtils;

import org.apache.hadoop.util.Progressable;

import org.junit.After;

import org.junit.Before;

import org.junit.Test;

import java.io.BufferedInputStream;

import java.io.File;

import java.io.FileInputStream;

import java.io.InputStream;

import java.net.URI;

public class HDFSApp {

public static final StringHDFS_PATH ="hdfs://hadoop:8020";

FileSystemfileSystem =null;

Configurationconfiguration =null;

}

/**

* 创建HDFS目录01

*/

@Test

public void mkdir()throws Exception {

fileSystem.mkdirs(new Path("/hdfsapi/test"));

}

7e84d362eb79

/**

* 创建文件02

*/

@Test

public void creat()throws Exception{

FSDataOutputStream output =fileSystem.create(new Path("/hdfsapi/test/a.txt"));

output.write("hellow hadoop".getBytes());

output.flush();

output.close();

}

7e84d362eb79

/**

* 查看HDFS文件内容03

*/

@Test

public void cat()throws Exception{

FSDataInputStream in =fileSystem.open(new Path("/hdfsapi/test/a.txt"));

IOUtils.copyBytes(in, System.out, 1024);

in.close();

}

7e84d362eb79

/**

* 重命名04

*/

@Test

public void rename()throws Exception{

Path oldPath =new Path("/hdfsapi/test/a.txt");

Path newPath =new Path("/hdfsapi/test/b.txt");

fileSystem.rename(oldPath,newPath);

}

7e84d362eb79

/**

* 上传文件到HDFS 05

*/

@Test

public void copyFromLocalFile()throws Exception {

Path localPath =new Path("H:/hh.txt");

Path hdfsPath =new Path("/hdfsapi/test");

fileSystem.copyFromLocalFile(localPath, hdfsPath);

}

7e84d362eb79

/**

* 上传文件到HDFS 05

*/

@Test

public void copyFromLocalFilePlus()throws Exception {

InputStream in =new BufferedInputStream(new FileInputStream(new File("H:/atom.zip")));

FSDataOutputStream output =fileSystem.create(new Path("/hdfsapi/test/haha.tgz"), new             Progressable() {

public void progress() {

System.out.print(".");    //进度提醒

}

});

IOUtils.copyBytes(in, output, 4096);

}

7e84d362eb79

7e84d362eb79

/**

* 下载HDFS文件

*/

@Test

public void copyToLocalFile()throws Exception{

Path localPath =new Path("H:/za/kong.txt");

Path hdfsPath =new Path("/hdfsapi/test/hh.txt");

fileSystem.copyToLocalFile(false, hdfsPath, localPath, true);

}

7e84d362eb79

/**

* 查看某个目录下的所有文件

*/

@Test

public void listFiles()throws Exception {

FileStatus[] fileStatuses =fileSystem.listStatus(new Path("/hdfsapi/test"));

for (FileStatus fileStatus : fileStatuses) {

String isDir = fileStatus.isDirectory() ?"文件夹" :"文件";

short replication = fileStatus.getReplication();

long len = fileStatus.getLen();

String path = fileStatus.getPath().toString();

System.out.println(isDir +"\t" + replication +"\t" + len +"\t" + path);

}

}

7e84d362eb79

/**

* 删除

* @throws Exception

*/

@Test

public void delete()throws Exception{

fileSystem.delete(new Path("/hdfsapi/test"), true);

}

7e84d362eb79

@Before

public void setUp()throws Exception {

System.out.println("HDFSApp.setUp");

configuration =new Configuration();

fileSystem = FileSystem.get(new URI(HDFS_PATH), configuration, "hadoop");

}

@After

public void tearDown()throws Exception {

configuration =null;

fileSystem =null;

System.out.println("\nHDFSApp.tearDown");

}

}

注:如果通过hdfs shell的方式put的上去的文件,副本系数才为1

如果同过Java API上传的,因为本地没有手工配置副本系数,就只能采用hadoop默认的副本系数。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值