zoukankan      html  css  js  c++  java
  • Java程序操作HDFS

    1.新建项目
    2.导包

    解压hadoop-2.7.3.tar.gz
    E:工具大数据大数据提升资料1-软件资料6-Hadoop安装包Java1.8环境
    下编译hadoop-2.7.3hadoop-2.7.3sharehadoopcommon
    E:工具大数据大数据提升资料1-软件资料6-Hadoop安装包Java1.8环境
    下编译hadoop-2.7.3hadoop-2.7.3sharehadoopcommonlib
    E:工具大数据大数据提升资料1-软件资料6-Hadoop安装包Java1.8环境
    下编译hadoop-2.7.3hadoop-2.7.3sharehadoophdfs

    JUNIT  单元测试
      /**
       * 单元测试
       * 1.修饰符必须是public
       * 2.不能有参数
       * 3.不能有返回值
       *
       * 运行:选中方法名来运行
       *       run as  --junit test
       */
      @Test
      public  void m1(){
        System.out.println("hello");
      }

    package com.zy.hdfs;
    
    import java.io.IOException;
    import java.net.URI;
    import java.net.URISyntaxException;
    import java.util.Iterator;
    
    import org.apache.hadoop.conf.Configuration;
    import org.apache.hadoop.fs.FileStatus;
    import org.apache.hadoop.fs.FileSystem;
    import org.apache.hadoop.fs.LocatedFileStatus;
    import org.apache.hadoop.fs.Path;
    import org.apache.hadoop.fs.RemoteIterator;
    import org.junit.Before;
    import org.junit.Test;
    
    public class test {
        public static void main(String[] args) throws Exception {
            //上传
            
            //1实例化configuration
            Configuration configuration = new Configuration();
            //-------------------
            //设置一些属性
            configuration.set("dfs.replication", "2");//2个副本
            configuration.set("dfs.blocksize", "80m");//按照80m切分
            //----------------------
            //2.获取操作文件系统的客户端实例
            FileSystem fs = FileSystem.get(new URI("hdfs://192.168.64.111:9000/"), configuration, "root");
            //3.执行上传操作  (src 本地资源 ,dst 上传目的地)
            fs.copyFromLocalFile(new Path("C:\Users\Administrator\Desktop\wc.txt"), new Path("/"));//两次上传一样的会被覆盖
            //4.关闭链接
            fs.close();
        }
        
        
    
        @Test
        public void download() throws Exception{
            //下载
            
            Configuration configuration = new Configuration();
            
            FileSystem fs = FileSystem.get(new URI("hdfs://192.168.64.111:9000"), configuration, "root");
            
            fs.copyToLocalFile(false, new Path("/jdk-8u141-linux-x64.tar.gz"), new Path("E://jdk-8u141-linux-x64.tar.gz"), true);
            
            fs.close();    
            
        }
        //----------------
        FileSystem fs=null;
        @Before//在每次运行junit时先执行
        public void before() throws Exception{
            System.out.println("11111");
            Configuration configuration = new Configuration();    
            fs = FileSystem.get(new URI("hdfs://192.168.64.111:9000/"), configuration, "root");        
        }
        //---------------
        @Test
        public void delete() throws Exception{//删除
            fs.delete(new Path("/弹性表达式.doc"), true);//为true删除文件夹及里面的内容,false只能删除空的文件夹
            fs.close();
            
        }
        @Test
        public void mkdir() throws Exception{//创建目录
            fs.mkdirs(new Path("/a/b/c"));
            fs.close();
            
        }
        
        @Test
        public void list() throws Exception{
            FileStatus[] listStatus = fs.listStatus(new Path("/"));//不会递归进去
            for (FileStatus fileStatus : listStatus) {
                if(fileStatus.isFile()){
                    System.out.println("文件名:"+fileStatus.getPath().toString());
                    
                }else{
                    System.out.println("目录:"+fileStatus.getPath().toString());
                    
                }
                
            }
            fs.close();
            
        }
        @Test
        public void list2() throws Exception{//递归遍历出所有文件
            RemoteIterator<LocatedFileStatus> listFiles = fs.listFiles(new Path("/"), true);//为true,递归遍历
            while(listFiles.hasNext()){
                LocatedFileStatus next = listFiles.next();
                System.out.println(next.toString());
                System.out.println("文件块尺寸"+next.getBlockSize());
             
            }
    
        }
     
    }
  • 相关阅读:
    国税开发子系统----纳税服务子系统问题
    Hibernate中的一对一多映射和一对一映射的创建
    hibernate 创建一对一唯一外键映射的问题
    疑问,TESt中注入sessionFactory失败
    AJAX方式进行验证码的判断(JS方式)
    过滤器和拦截器的使用
    SSH框架的整合
    编码问题
    微服务架构对比
    docker安装mysql8.0连接问题,sqlyog报2058或者Navicat 1257
  • 原文地址:https://www.cnblogs.com/qfdy123/p/11240431.html
Copyright © 2011-2022 走看看