博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[0014] HDFS 常用JAVA 操作实战
阅读量:5037 次
发布时间:2019-06-12

本文共 5203 字,大约阅读时间需要 17 分钟。

目的:

学习用java进行的常用hdfs操作

参考:

 

环境:

hadoop2.6.4

win7 下的eclipse环境调试已经配置好,参考前面的文章

 

代码:

1. 创建文件夹

1 package hdfs; 2  3 import java.io.IOException; 4  5 import org.apache.hadoop.conf.Configuration; 6 import org.apache.hadoop.fs.FileSystem; 7 import org.apache.hadoop.fs.Path; 8  9 /**10  * 11  * @author Administrator12  *  创建文件夹,如果不存在13  */14 public class CreateFolder {15     16     public static void main(String[] args) throws IOException {17         Configuration conf =new Configuration();18         conf.set("fs.defaultFS", "hdfs://ssmaster:9000/");19         FileSystem fs =  FileSystem.get(conf) ;20         Path path = new Path("/output");21         22         if(! fs.exists(path)){23             fs.mkdirs(path);24         }25     }26 }

 

以流的方式下载文件

1 package hdfs; 2  3 import java.io.FileNotFoundException; 4 import java.io.FileOutputStream; 5 import java.io.IOException; 6  7 import org.apache.commons.compress.utils.IOUtils; 8 import org.apache.hadoop.conf.Configuration; 9 import org.apache.hadoop.fs.FSDataInputStream;10 import org.apache.hadoop.fs.FileSystem;11 import org.apache.hadoop.fs.Path;12 13 /**14  *  功能:      将 hdfs://ssmaster:9000/data/paper.txt下载到Windows下c:\paper.txt15  *  调用方式:windows下执行,eclipse中执行16  */17 18 public class Down_Load {19 20     public static void main(String[] args) {21         22     Configuration conf =new Configuration();23     conf.set("fs.defaultFS", "hdfs://ssmaster:9000/");24     25     FileSystem fs = null;26     Path src = null;27     FSDataInputStream in = null;28     FileOutputStream out = null;29       30     src = new Path("hdfs://ssmaster:9000/data/paper.txt" );31     32     try {33         34       fs = FileSystem.get(conf) ;35       in = fs.open(src);36 37        } catch (IOException e) {38         e.printStackTrace(); 39     }40     41     try {42         out = new FileOutputStream ("c:\\paper.txt"); //等效  c:/paper.txt43     } catch (FileNotFoundException e) {44         e.printStackTrace();45     }46     47     try {48         IOUtils.copy(in, out);49     } catch (IOException e) {50         e.printStackTrace();51     }52 53 }54 }
View Code

 

2 上传文件

1 package hdfs; 2  3 import java.io.IOException; 4  5 import org.apache.hadoop.conf.Configuration; 6 import org.apache.hadoop.fs.FileSystem; 7 import org.apache.hadoop.fs.Path; 8  9 /**10  * 11  * @author Administrator12  *  上传本地文件13  */14 public class UploadFile {15     16     public static void main(String[] args) throws IOException {17         Configuration conf =new Configuration();18         conf.set("fs.defaultFS", "hdfs://ssmaster:9000/");19         FileSystem fs =  FileSystem.get(conf) ;20         Path path = new Path("/output");21         Path src  = new Path("c:/paper.txt");22         23         fs.copyFromLocalFile(false, true, src, path);24 25     }26 }

 

3 下载文件

1 package hdfs; 2  3 import java.io.IOException; 4  5 import org.apache.hadoop.conf.Configuration; 6 import org.apache.hadoop.fs.FileSystem; 7 import org.apache.hadoop.fs.Path; 8  9 /**10  * 11  * @author Administrator12  *  上传本地文件13  */14 public class DownFile {15     16     public static void main(String[] args) throws IOException {17         Configuration conf =new Configuration();18         conf.set("fs.defaultFS", "hdfs://ssmaster:9000/");19         FileSystem fs =  FileSystem.get(conf) ;20         Path hdfs = new Path("/output/paper.txt");21         Path win7  = new Path("c:/paper_download.txt");22         23         fs.copyToLocalFile(hdfs, win7);24 25     }26 }

 

4 删除文件

1 package hdfs; 2  3 import java.io.IOException; 4  5 import org.apache.hadoop.conf.Configuration; 6 import org.apache.hadoop.fs.FileSystem; 7 import org.apache.hadoop.fs.Path; 8  9 /**10  * 11  * @author Administrator12  *  删除hdfs文件,如何文件不存在,也运行正常13  */14 public class DeleteFile {15     16     public static void main(String[] args) throws IOException {17         Configuration conf =new Configuration();18         conf.set("fs.defaultFS", "hdfs://ssmaster:9000/");19         FileSystem fs =  FileSystem.get(conf) ;20         Path hdfs = new Path("/output/paper.txt");21         fs.delete(hdfs, true);22         23     }24 }

 

5 显示目录信息

1 package hdfs; 2  3 import java.io.IOException; 4  5 import org.apache.hadoop.conf.Configuration; 6 import org.apache.hadoop.fs.FileStatus; 7 import org.apache.hadoop.fs.FileSystem; 8 import org.apache.hadoop.fs.Path; 9 10 /**11  * 12  * @author Administrator13  *  显示某个目录下的文件14  */15 public class ListFiles {16     17     public static void main(String[] args) throws IOException {18         Configuration conf =new Configuration();19         conf.set("fs.defaultFS", "hdfs://ssmaster:9000/");20         FileSystem fs =  FileSystem.get(conf) ;21         Path hdfs = new Path("/");22         23         24         FileStatus [] files = fs.listStatus(hdfs);25         for (FileStatus file:files) {26           27            System.out.print(file.getPath().getName());28            System.out.print("\t"+ file.isDirectory());29            System.out.print("\t"+ file.getOwner());           30            System.out.print("\n");31         }32 33     }34 }

 

总结:

HDFS JAVA API 调用初步学会使用。该篇章翻过去,后续用什么再学

后续:

   有空将文件系统的常用操作实现,搜索、递归显示、查看文件内容

 

参考:

 1

 

转载于:https://www.cnblogs.com/sunzebo/p/5997755.html

你可能感兴趣的文章
解决错误提示unable to invoke code completion due to errors in source cord.
查看>>
比较smart的一条分页存储过程
查看>>
POJ1979-Red and Black
查看>>
leetcode 数据库题解
查看>>
文件打开对话框
查看>>
install docker on centos7
查看>>
mysql 查询条件中文问题
查看>>
svn
查看>>
父组件操作子组件中的值,将父组件的值设置给子组件
查看>>
配置SQL Server 2005 以允许远程连接
查看>>
LSTM学习理解资料
查看>>
Callable与Runable接口 submit与execute区别
查看>>
Obsidium V1.3.0.4 脱壳
查看>>
Linux make语法
查看>>
用户体验之认知地图、思维导图和概念图
查看>>
bzoj3389 [Usaco2004 Dec]Cleaning Shifts安排值班
查看>>
bzoj3173 [Tjoi2013]最长上升子序列
查看>>
第八周作业
查看>>
spring事务隔离级别
查看>>
JavaEE:Eclipse开发工具的相关使用和XML技术
查看>>