大数据开发之Hadoop篇----HDFS java API

使用JAVA API操作HDFS

起点

要使用Java API来操作HDFS首先我们需要一个Configuration对象和一个FileSystem对象,这两个可以说HDFS上面的入口点

//如果你不想使用默认配置的参数就可以在这个conf对象上设置,使用方法set
Configuration conf = new Configuration();
//将conf对象作为参数传入到FileSystem的get方法其当中
URI uri = new URI("hdfs://......");
//这里需要传入的参数有3个,一个URI的对象,里面表明是一个hdfs的地址,一个conf对象,表明一个配置,一个用户名
FileSystem fs = FileSystem.get(uri,conf,"test");

写出流

有了这个fs的对象,我们就可以写入东西了,我们将使用到create方法来创建一个FSDataoutputStream的对象来完成写入操作。

//这里我们需要在create方法里面传入一个Path对象,这个对象用于指定HDFS上面的某个文件,且文件不能事先存在
FSDataOutputStream out = fs.create(new Path("/....");
//就是这个方法了,但是这个方法是写入字符串
out.writeUTF("hello world");
//为什么需要这个方法呢,是因为我们写入的数据是先写入到内存里面,当内存满了在flush到HDFS上面
out.flush();
//用完的流要记得关闭
out.close();

读入流

同样的,我们使用fs这个对象将某个文件里面的数据读取出来,可以读到其他文件,也可以读到控制台

FSDataInputStream in = fs.open("hdfs://....");
//这里我们使用IOUtils这个工具类来读取数据
//里面我们需要传入3个参数,我们指定的输入流,数据要输出的流或者控制台,最后一个是其一次输出的字节数量
IOUtils.copyBytes(in,System.out,1024);
in.close();

其它操作

//重命名,里面需要传入两个Path对象,代表新旧两个路径
fs.rename(Path old_path,Path new_path);
//这两个方法里面都需要传入两个Path对象,但分别代表着本机路径和HDFS上的路径
fs.copyFromLocalFile();
fs.copyToLocalFile();
//显示所有文件夹下的文件,还可以选择是否递归,true为递归显示
fs.listFiles(new Path("..."),true);
//删除,true控制是否递归删除
fs.delete(new Path("...."),true);

猜你喜欢

转载自blog.csdn.net/weixin_39702831/article/details/85064505