zoukankan      html  css  js  c++  java
  • 上传--下载HDFS文件并指定文件物理块的大小

    使用hdfs的api接口分别实现从本地上传文件到集群和从集群下载文件到本地。

    1)上传文件主要是使用FileSystem类的copyFromLocalFile()方法来实现,另外我们上传文件时可以指定以多大的物理块来存储此文件,使用conf.set("dfs.block.size","8388608")设置物理块大小是8M,此方法第二个参数的单位是字节。另外编译此代码除了需要使用hadoop-core-1.2.1.jar,还需要使用

    commons-configuration-1.6.jar包。完整代码如下:

    /**
     * Created with IntelliJ IDEA.
     * User: hadoop
     * Date: 16-3-13
     * Time: 下午6:31
     * To change this template use File | Settings | File Templates.
     */
    
    import org.apache.hadoop.conf.Configuration;
    import org.apache.hadoop.fs.FileSystem;
    import org.apache.hadoop.fs.Path;
    
    import java.io.IOException;
    
    public class uploadFile {
        public static void main(String[] args) throws IOException {
            Configuration conf=new Configuration();//只读取了core.xml文件
            //conf.addResource("hdfs-default.xml");
            //Long x=conf.get("dfs.block.size") ;
            conf.set("dfs.block.size", args[0]);//第二个参数的单位是字节,并且是字符串形式
             FileSystem fs=FileSystem.get(conf);
            Path src=new Path(args[1]);//参数是本地文件的绝对路径的字符串形式
            Path dst=new Path(args[2]);
            fs.copyFromLocalFile(src,dst);
            System.out.println("upload to:"+conf.get("fs.default.name"));
        }
    }

    例如将本地test目录下的F1k1k文件上传到集群,所使用的命令就是:

    hadoop jar uploadFile.jar uploadFile 8388608 /home/hadoop/test/F1k1k /data0313

    2)从集群下载文件类似,只需要将copyFromLocalFile()方法改为copyToLocalFile(),只不过代码中src变成了集群路径,dst是本地路径

    如下所示:

     1 /**
     2  * Created with IntelliJ IDEA.
     3  * User: hadoop
     4  * Date: 16-3-13
     5  * Time: 下午6:31
     6  * To change this template use File | Settings | File Templates.
     7  */
     8 
     9 import org.apache.hadoop.conf.Configuration;
    10 import org.apache.hadoop.fs.FileSystem;
    11 import org.apache.hadoop.fs.Path;
    12 
    13 import java.io.IOException;
    14 
    15 public class uploadFile {
    16 
    17     public static void main(String[] args) throws IOException {
    18         Configuration conf=new Configuration();
    19         //conf.addResource("hdfs-default.xml");
    20         //Long x=conf.get("dfs.block.size") ;
    21         conf.set("dfs.block.size", args[0]);
    22          FileSystem fs=FileSystem.get(conf);
    23         Path src=new Path(args[1]);//src是集群路径
    24         Path dst=new Path(args[2]);//dst是本地路径
    25         fs.copyToLocalFile(src,dst);
    26         System.out.println("upload to:"+conf.get("fs.default.name"));
    27     }
    28 }
  • 相关阅读:
    第十七节:织梦做自定义表单在线预约的方法
    ExecuteNonQuery()返回值
    WCF服务编程读书笔记(6):错误
    ubuntu 工作区切换快捷键设置
    a pubhub service
    淘宝提供了Rubygems的国内镜像站点 ruby rails源
    新rails安装过程记录
    XMLRPC HOWTO
    XMLRPC HOWTO
    metaweblog api相关
  • 原文地址:https://www.cnblogs.com/lz3018/p/5272948.html
Copyright © 2011-2022 走看看