美文网首页
java操作HDFS的简单总结demo

java操作HDFS的简单总结demo

作者: 记得_5d12 | 来源:发表于2018-04-17 15:05 被阅读0次

一、需求分析

        将本地文件系统中的hdfsDemo文件传到HDFS文件系统上的目录中,如下:hdfs://hadoop01:9000/data/hdfs/。

        首先,判断指定的文件夹是否存在,若不存在则创建指定的文件夹,然后将文件夹中的文件及文件夹列出,将文件传到指定的地址中。

二、java代码开发

        废话不多说,直接贴代码。格式不对的话,凑合看吧。。。

public class HdfsDemo {

public static void main(String[] args) {

// 指定的路径

String uri = "hdfs://hadoop01:9000/data/hdfs";

String p_uri = "hdfs://hadoop01:9000/data";

// linux中的文件路径

String source = "/usr/local/filecontent/hdfsDemo";

// HDFS中要创建的文件

String file = "hdfs://hadoop01:9000/data/hdfs/hdfsDemo";

Configuration conf = new Configuration();

FileSystem fs = null;

try{

fs = FileSystem.get(new URI(uri), conf);

Path p_path = new Path(p_uri);

// 判断指定的路径是否存在

boolean isExists = fs.exists(new Path(uri));

if(!isExists){

// 不存在

System.out.println("======指定的目录不存在======");

FileStatus status[] = fs.listStatus(p_path);

System.out.println("======现有目录结构如下======");

for (int i = 0; i < status.length; i++) {

System.out.println(status[i].getPath().toString());

}

System.out.println("======正在创建指定的目录=====");

fs.mkdirs(new Path(uri));

System.out.println("========目录创建成功========");

FileSystem fs1 = FileSystem.get(new URI(uri), conf);

FileStatus status1[] = fs1.listStatus(p_path);

System.out.println("======创建后目录结构如下======");

for (int i = 0; i < status1.length; i++) {

System.out.println(status1[i].getPath().toString());

}

}

System.out.println("======正在将文件传输到HDFS文件系统中======");

InputStream in = new BufferedInputStream(new FileInputStream(source));

OutputStream out = fs.create(new Path(file));

IOUtils.copyBytes(in, out, 4096,true);

System.out.println("======传输成功=======");

}catch(Exception e){

e.printStackTrace();

}finally{

if(fs != null){

try {

fs.close();

} catch (IOException e) {

e.printStackTrace();

}

}

}

}

}

运行成功!

        基本已经没问题了,不过还要在hdfs上查看是否已经传输过去了。

已经传上去了 在平台上也能看到文件信息

相关文章

网友评论

      本文标题:java操作HDFS的简单总结demo

      本文链接:https://www.haomeiwen.com/subject/cawukftx.html