hadoop HDFS的API封装

Configuration类:该类的对象封装了客户端或者服务端的配置。
FileSystem类:该类的对象是一个文件系统对象,可以用该队想的一些方法来对文件进行操作。
FSDataInputStream和FSDataOutputStream:这两个类是HDFS中的输入输出流。
 
基本流程:
得到Configuration对象
得到FileSystem对象
进行文件操作(读写、删除、改名)
所需引入的库
 
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FSDataOutputStream;
import org.apache.hadoop.fs.FileStatus;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IOUtils;
 
文件操作前的准备工作
<br>获取配置信息
Configuration conf = new Configuration();
建立文件系统对象
FileSystem fs = FileSystem.get(conf);
写文件
Path dstPath = new Path(dst);//目标路径
FSDataOutputStream outputStream = fs.create(dstPath);//打开一个输出流
outputStream.write(contents);
outputStream.close();
fs.close();
读文件
InputStream in = null;
in = fs.open(srcPath);
IOUtils.copyBytes(in,System.out,4096,false);//复制到标准输出流
IOUtils.closeStream(in);
上传文件到HDFS
Path srcPath = new Path(src);//原路径
Path dstPath = new Path(dst);//目标路径
fs.copyFromLocalFile(false,srcPath,dstPath);
前面参数是指是否删除原文件,true为删除,默认为false
获取指定文件信息
FileStatus[] fileStatus = fs.listStatus(dstPath);
boolean isok=fs.rename(oldPath,newPath);
boolean isok=fs.deleteOnExit(path);
boolean isok=fs.mkdirs(srcPath);
 打开eclipse建立一个工程,将代码copy,逐步运行。
 
 在工程中建立一个conf目录,注意先将相关的配置文件拷贝过去主要是三个文件core-site.xml , mapred-site.xml,hdfs-site.xml
 
 并在project属性中设置java build path 单击addfolder 将conf目录加上
 
 import java.io.FileInputStream;
 
 import java.io.IOException;
 
 import java.io.InputStream;
 
 import org.apache.hadoop.conf.Configuration;
 
 import org.apache.hadoop.fs.FSDataOutputStream;
 
 import org.apache.hadoop.fs.FileStatus;
 
 import org.apache.hadoop.fs.FileSystem;
 
 import org.apache.hadoop.fs.Path;
 
 import org.apache.hadoop.io.IOUtils;
 
 public class HdfsFile {
 
     //创建新文件
 
     public static void createFile(String dst , byte[] contents) throws IOException{
 
         Configuration conf = new Configuration();
 
         FileSystem fs = FileSystem.get(conf);
 
         Path dstPath = new Path(dst); //目标路径
 
         //打开一个输出流
 
         FSDataOutputStream outputStream = fs.create(dstPath);
 
         outputStream.write(contents);
 
         outputStream.close();
 
         fs.close();
 
         System.out.println("文件创建成功!");
 
     }
 
     //上传本地文件
 
     public static void uploadFile(String src,String dst) throws IOException{
 
         Configuration conf = new Configuration();
 
         FileSystem fs = FileSystem.get(conf);
 
         Path srcPath = new Path(src); //原路径
 
         Path dstPath = new Path(dst); //目标路径
 
         //调用文件系统的文件复制函数,前面参数是指是否删除原文件,true为删除,默认为false
 
         fs.copyFromLocalFile(false,srcPath, dstPath);
 
         //打印文件路径
 
         System.out.println("Upload to "+conf.get("fs.default.name"));
 
         System.out.println("------------list files------------"+"\n");
 
         FileStatus [] fileStatus = fs.listStatus(dstPath);
 
         for (FileStatus file : fileStatus)
 
         {
 
             System.out.println(file.getPath());
 
         }
 
         fs.close();
 
     }
 
     //文件重命名
 
     public static void rename(String oldName,String newName) throws IOException{
 
         Configuration conf = new Configuration();
 
         FileSystem fs = FileSystem.get(conf);
 
         Path oldPath = new Path(oldName);
 
         Path newPath = new Path(newName);
 
         boolean isok = fs.rename(oldPath, newPath);
 
         if(isok){
 
             System.out.println("rename ok!");
 
         }else{
 
             System.out.println("rename failure");
 
         }
 
         fs.close();
 
     }
 
     //删除文件
 
     public static void delete(String filePath) throws IOException{
 
         Configuration conf = new Configuration();
 
         FileSystem fs = FileSystem.get(conf);
 
         Path path = new Path(filePath);
 
         boolean isok = fs.deleteOnExit(path);
 
         if(isok){
 
             System.out.println("delete ok!");
 
         }else{
 
             System.out.println("delete failure");
 
         }
 
         fs.close();
 
     }
 
     //创建目录
 
     public static void mkdir(String path) throws IOException{
 
         Configuration conf = new Configuration();
 
         FileSystem fs = FileSystem.get(conf);
 
         Path srcPath = new Path(path);
 
         boolean isok = fs.mkdirs(srcPath);
 
         if(isok){
 
             System.out.println("create dir ok!");
 
         }else{
 
             System.out.println("create dir failure");
 
         }
 
         fs.close();
 
     }
 
     //读取文件的内容
 
     public static void readFile(String filePath) throws IOException{
 
         Configuration conf = new Configuration();
 
         FileSystem fs = FileSystem.get(conf);
 
         Path srcPath = new Path(filePath);
 
         InputStream in = null;
 
         try {
 
             in = fs.open(srcPath);
 
             IOUtils.copyBytes(in, System.out, 4096, false); //复制到标准输出流
 
         } finally {
 
             IOUtils.closeStream(in);
 
         }
 
     }
 
     public static void main(String[] args) throws IOException {
 
         //测试上传文件
 
         //uploadFile("/home/hadoop/music1.txt","hdfs://master:9000/user/hadoop/test.txt");
 
         //测试创建文件
 
       //byte[] contents =  "hello world 世界你好\n".getBytes();
 
        //createFile("hdfs://master:9000/user/hadoop/test1/d.txt",contents);
 
         //测试重命名
 
         //rename("hdfs://master:9000/user/hadoop/test1/d.txt", "hdfs://master:9000/user/hadoop/test1/dd.txt");
 
         //测试删除文件
 
         //delete("hdfs://master:9000/user/hadoop/test1/d.txt"); //使用相对路径
 
        //delete("hdfs://master:9000/user/hadoop/test1");    //删除目录
 
         //测试新建目录
 
        // mkdir("hdfs://master:9000/user/hadoop/test1");
 
         //测试读取文件
 
         //readFile("hdfs://master:9000/user/hadoop/test1/d.txt");
 
     }
 
 }

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值