hadoop相关操作的一些方法

FileSystem.get(url,configuration,user);//获取连接
CopyFromLocalFile();//上传文件到hdfs
CopyToLocal();//下载文件到本地
rename(path1,path2)//重新命名文件
delete(path1,true);//删除文件名
fs.listStatus(new Path());//用来判断文件的种类 是目录不是文件夹
iterator = fs.listFiles(path1, true);//参数1路径 参数2 递归 获取文件的相关的一些信息
BlockLocation[] blocakLocations=fileStatus.getBlockLocations();
LocatedFileStatus fileStatus = iterator.next();//获取每个文件从而可以获取他们的数据元信息
fileStatus.getPermission();//获取权限
fileStatus.getGruop();//获取所属组
fileStatus.getOwner();//获取所属用户
fileStatus.getLen();//

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.*;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;

import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;
import java.util.Arrays;

public class testCopyFromLocalFile{
    
    
    FileSystem fs;
    @Before
    public void testCopyFromLocalFile() throws IOException, InterruptedException, URISyntaxException {
    
    

        // 1 获取文件系统
        URI url=new URI("hdfs://192.168.48.128:9000");


//       优先级 修改一些东西 configuration.set-->hdf-site.xml--->修改集群中的配置文件


        Configuration configuration = new Configuration();
        configuration.set("dfs.replication", "2");//可以修改父本的个数
        String user="dev1";

         fs = FileSystem.get(url, configuration, user);
        System.out.println("intit....");


    }

    // 2 上传文件到HDFS
    @Test

    public void CopyFromLocalFiletest() throws  Exception{
    
    


//        path1 Windows系统的本地环境的文件路径
//        path2 hdfs文件路径


        Path path1=new Path("/opt/module/hadoop-2.7.2/word.txt");
        Path path2=new Path("/user/dev1/input");
        fs.copyFromLocalFile(path1,path2);
    }

//反hdfs文件复制到时本地
    @Test

    public void CopyToLocalFiletest() throws Exception{
    
    

        Path path1=new Path("/user/dev1/input2/word.txt");
        Path path2=new Path("e:/aaa.txt");
//     参数1 是否删除
        fs.copyToLocalFile(true,path1,path2);

    }


//    删除文件
    @Test

    public void deletetest() throws Exception{
    
    


        Path path = new Path("/opt/module/hadoop-2.7.2/word.txt");
        fs.delete(path,true);//true强制删除

    }



//    文件重命名
    @Test

    public void renametest() throws IOException {
    
    
        Path path1=new Path("/user/dev1/input2/word.txt");
        Path path2=new Path("/user/dev1/input2/newword.txt");

        fs.rename(path1,path2);

    }
//    遍历指定目录的元数据与信息
 @Test

   public void listFilestest() throws IOException {
    
     
        Path path1=new Path("/user/dev1/input/");
     RemoteIterator<LocatedFileStatus>  iterator = fs.listFiles(path1, true);//参数1路径 参数2 递归
     while(iterator.hasNext()){
    
    
//         获得每个文件
         LocatedFileStatus fileStatus = iterator.next();
//         权限
         System.out.println(fileStatus.getPermission()+"\t");
//         所有者
         System.out.println(fileStatus.getOwner()+"\t");
//         所属组
         System.out.println(fileStatus.getGroup() + "\t");
//         长度
         System.out.println(fileStatus.getLen() + '\t');
//         数据块的信息
         BlockLocation[] blocakLocations=fileStatus.getBlockLocations();
         System.out.println(Arrays.toString(blocakLocations));

     }



 }






@After

public void test() throws Exception{
    
    

// 3 关闭资源
    fs.close();


    System.out.println("destory....");
}




}



猜你喜欢

转载自blog.csdn.net/houzhicongone/article/details/115363137