实现HDFS数据上传和下载代码详解编程语言

    import java.io.FileInputStream;   
    import java.io.FileOutputStream;   
    import java.io.IOException;   
    import java.io.InputStream;   
    import java.io.OutputStream;   
    import java.net.URI;   
    import java.net.URISyntaxException;   
       
    import org.apache.hadoop.conf.Configuration;   
    import org.apache.hadoop.fs.FileSystem;   
    import org.apache.hadoop.fs.Path;   
    import org.apache.hadoop.io.IOUtils;   
    import org.junit.Before;   
    import org.junit.Test;   
       
    /*  
     1、通过代码来操作HDFS  
     2、实现了下载、上传文件的功能  
     */   
    public class HDFSDemo {    
        /*  
         1、通过代码来操作HDFS  
         2、实现了下载功能  
         */    
        public static void main(String[] args) throws IOException, URISyntaxException {   
            //与master建立联系   
            FileSystem fs =FileSystem.get(new URI("hdfs://master:9000"), new Configuration());   
            //通过流方式读取HDFS中的文件,将文件读入到内存当中   
            InputStream in  = fs.open(new Path("/user/guest/esri/xiaojson/xiao.json"));   
            //输出路径   
            OutputStream out = new FileOutputStream("D://xiao.json");   
            //工具类将in中的内容copy到out中,大师级默认都是4096   
            IOUtils.copyBytes(in, out, 4096, true);   
        }   
        /*  
         1、通过代码来操作HDFS  
         2、实现了下载功能,通过一句话实现下载  
         */    
        @Test   
        public void testDownLoad() throws IllegalArgumentException, IOException{   
            fs.copyToLocalFile(new Path("/user/guest/esri/xiaojson/xiao.json"), new Path("D://xiao1.json"));   
        }   
           
        FileSystem fs = null;   
        @Before   
        public void init() throws IOException, URISyntaxException, InterruptedException{   
            //创建FileSystem的实现类 (工具类)与master建立联系   
            fs =FileSystem.get(new URI("hdfs://master:9000"), new Configuration(),"guest");   
        }   
        /*  
         1、通过代码来操作HDFS  
         2、实现了上传功能  
         */    
        @Test   
        public void testUpload() throws IOException{   
            //读取本地文件系统的文件,返回输入流   
            InputStream in = new FileInputStream("D://xiao123.json");   
            //在HDFS上创建一个文件,返回输出流   
            OutputStream out = fs.create(new Path("/test.jar"));   
            //工具类将in中的内容copy到out中,大师级默认都是4096   
            IOUtils.copyBytes(in, out, 4096, true);   
        }    
           
    }  

原创文章,作者:Maggie-Hunter,如若转载,请注明出处:https://blog.ytso.com/10135.html

(0)
上一篇 2021年7月19日
下一篇 2021年7月19日

相关推荐

发表回复

登录后才能评论