您的位置:首页 > 大数据 > Hadoop

常用HDFS的API操作

2017-10-15 19:08 645 查看

HDFS常用的API操作如下:

1、创建目录

2、上传文件

3、重命名文件

4、删除文件

5、下载文件

6、展示目录

HDFS 的API演示(利用Junit来操作)

import java.io.FileNotFoundException;
import java.io.IOException;
import java.net.URI;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileStatus;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.junit.After;
import org.junit.Before;


public class Test {
FileSystem fs = null;
@Before
public void init() throws Exception{
URI  uri = new URI("hdfs://192.168.121.129:9000");
Configuration conf  = new Configuration();
fs = FileSystem.get(uri,conf,"hadoop");
}


//————————————————————————————

//创建目录
@org.junit.Test
public void createFilts() throws Exception{

boolean b = fs.mkdirs(new Path("/test9/aaa/bbb"));
if(b){
System.out.println("创建成功");
}
else{
System.out.println("创建失败");
}

}


//—————————————————————————————

//上传文件(前提是上传所致的文件夹必须存在)
@org.junit.Test
public void putFile() throws IllegalArgumentException, IOException{

fs.copyFromLocalFile(new Path("c:/zjl.txt"),new Path("/test9/aaa/bbb"));
boolean  b = fs.exists(new Path("/test9/aaa/bbb/zjl.txt"));
if(b){
System.out.println("上传成功");
}
else{
System.out.println("上传失败");
}
}


//————————————————————————————–

//下载文件
@org.junit.Test
public void download() throws IllegalArgumentException, IOException{
//下面这个方法的执行可能会在校验过程中失败,同时执行的结果相当于剪切
//fs.copyToLocalFile(new Path("/test9/aaa/bbb/zjl.txt"), new Path("c:\\"));
// 下面这个方法可以控制校验

fs.copyToLocalFile(false, new Path("/test9/aaa/bbb/zjl.txt"),  new Path("c:\\"), true);
//fs.copyToLocalFile(delSrc, src, dst, useRawLocalFileSystem);
注:上面的这个重载方法中的delSrc指的是当你执行这个命令时,若执行该值为false 则不删除 hdfs上的相应文件(也就是不进行剪切)。
若为true则删除。
useRawLocalFileSystem  指的是 是否开启文件校验
}


//——————————————————————————————–

//删除文件夹

@org.junit.Test
public void delete() throws IllegalArgumentException, IOException{

boolean b = fs.delete(new Path("/test9/aaa/bbb/zjl.txt"), true);

System.out.println(b);

注:  fs.delete(f, recursive)  方法中recursive  为true时能够将带有内容的文件夹删除,为false时,则只能删除空目录。

}


//——————————————————————————————–

重命名
@org.junit.Test
public void rename() throws IllegalArgumentException, IOException{
boolean b =fs.rename(new Path("/test9/aaa/bbb/zjl.txt"), new Path("/test9/aaa/bbb/aa.txt"));

System.out.println(b);

注:这里更改的是最后的文件的名,而不要试图去更改中间文件夹(aaa/bbb)的名

}


//———————————————————————————————

查看文件及文件夹的信息(仅显示儿子不显示孙子)

@org.junit.Test
public void getFileAndDirectory() throws FileNotFoundException, IllegalArgumentException, IOException{
FileStatus[ ]  fss =   fs.listStatus(new Path("/"));
String flag ="";
for(FileStatus  f : fss){

if(f.isDirectory()){

flag = "Directory";
}
else{

flag ="file";

}
System.out.println(flag + "\t" +f.getPath().getName());

}

}


//———————————————————————————————

@After
public void finish() throws IOException{
fs.close();

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  api junit hdfs