分享

操作HDFS文件方式对比总结

hyj 2013-12-24 22:27:34 发表于 实操演练 [显示全部楼层] 回帖奖励 阅读模式 关闭右栏 1 6571
本帖最后由 pig2 于 2014-2-19 00:13 编辑

阅读本文可以带着下面问题:
1.对比下面两种操作HDFS文件的不同之处?


一、hadoop API 上传文件
Hadoop的API中的普通copy的实现原理是什么?
  1. import java.io.BufferedInputStream;
  2. import java.io.FileInputStream;
  3. import java.io.InputStream;
  4. import java.io.OutputStream;
  5. import java.net.URI;
  6. import org.apache.hadoop.conf.Configuration;
  7. import org.apache.hadoop.fs.FileSystem;
  8. import org.apache.hadoop.fs.Path;
  9. import org.apache.hadoop.io.IOUtils;
  10. import org.apache.hadoop.util.Progressable;// vv FileCopyWithProgress
  11. public class FileCopyWithProgress {
  12.   public static void main(String[] args) throws Exception {
  13.     String localSrc = args[0];
  14.     String dst = args[1];
  15.    
  16.     InputStream in = new BufferedInputStream(new FileInputStream(localSrc));
  17.     //建立一个本地的InputStream
  18.     Configuration conf = new Configuration();//建立接口
  19.     FileSystem fs = FileSystem.get(URI.create(dst), conf);//创建文件系统实例
  20.     OutputStream out = fs.create(new Path(dst), new Progressable() {
  21.       public void progress() {
  22.         System.out.print(".");
  23.       }//通过实例创建管道 create方法返回的是FSDataOutputStream对象
  24.     });
  25.    
  26.     IOUtils.copyBytes(in, out, 4096, true);//通过管道进行写入
  27.   }
  28. }
复制代码
上面的作用是把本地文件copy到hdfs文件中

下面还有一种方式,可以参考:
  1. package com.java.api.hdfs;  
  2.   
  3. import java.io.BufferedReader;  
  4. import java.io.IOException;  
  5. import java.io.InputStream;  
  6. import java.io.InputStreamReader;  
  7.   
  8. import org.apache.hadoop.conf.Configuration;  
  9. import org.apache.hadoop.fs.FileStatus;  
  10. import org.apache.hadoop.fs.FileSystem;  
  11. import org.apache.hadoop.fs.Path;
  12.   /***
  13.      * 上传本地文件到
  14.      * HDFS上
  15.      *  
  16.      * **/  
  17.     public static void uploadFile()throws Exception{  
  18.         //加载默认配置  
  19.         FileSystem fs=FileSystem.get(conf);  
  20.           //本地文件  
  21.         Path src =new Path("D:\\6");  
  22.         //HDFS为止  
  23.         Path dst =new Path("hdfs://10.2.143.5:9090/root/");  
  24.         try {  
  25.             fs.copyFromLocalFile(src, dst);  
  26.         } catch (IOException e) {  
  27.             // TODO Auto-generated catch block  
  28.             e.printStackTrace();  
  29.         }  
  30.         System.out.println("上传成功........");  
  31.      
  32.         fs.close();//释放资源  
  33.    
  34.          
  35.     }  
  36.   
  37. }  
复制代码

已有(1)人评论

跳转到指定楼层
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条