hadoop后端——使用java数据流配置

Posted 一 研 为定

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了hadoop后端——使用java数据流配置相关的知识,希望对你有一定的参考价值。

     在做之前需要在application.properties写上自己虚拟机的ip号和端口号,并配置上如下代码,将上传文件的大小控制在500MB以内

spring.servlet.multipart.max-file-size=500MB
spring.servlet.multipart.max-request-size=500MB

1、mkdir创建文件夹

       首先需要定义抽象类,然后配置namenode的地址,然后指定用户名,获取FileSystem对象,注意用户名一定要改成自己虚拟机的用户名,否则就不能成功。然后新建路径,起名为filePath,使用mkdir创建路径。

 @Override
    public void mkdir(String dir) throws Exception
        Configuration conf=new Configuration();
        //配置NameNode地址
        URI uri=new URI(namenodeRpcUrl);
        //指定用户名,获取FileSystem对象
        FileSystem fs=FileSystem.get(uri,conf,"lu");

        Path filePath = new Path(dir);
        fs.mkdirs(filePath);
        System.out.println("mkdir " + dir + " Successfully!");

    

2、upload上传(将本地文件上传到hdfs)

       因为这次是将本地文件上传到hdfs,所以我们需要在hdfs上创建一个文件,将本地文件中的数据作为输入流上传到hdfs中。所以定义new_file文件,作为hdfs中的文件,定义一个FSDataOutputStream类,使用create函数创建一个空文件,复制流使用copyBytes,将本地文件中的数据复制到hdfs中创建的空文件中,最后使用closeSteam关闭数据流。

 @Override
    public void upload(InputStream is, String dstHDFSFile) throws Exception 
	//请实现本地文件上传到hdfs
        Configuration conf=new Configuration();
        //配置NameNode地址
        URI uri=new URI(namenodeRpcUrl);
        //指定用户名,获取FileSystem对象
        FileSystem fs=FileSystem.get(uri,conf,"lu");
        //Path,指定待操作的文件或路径
        Path new_file = new Path(dstHDFSFile);
        //创建hdfs上的文件
        FSDataOutputStream dataOutputStream = fs.create(new_file,true);
        //复制流
        IOUtils.copyBytes(is,dataOutputStream,conf);
        //关闭流
        IOUtils.closeStream(dataOutputStream);
        System.out.println( "Upload Successfully!" );
    

3、download下载(将hdfs中的文件下载到本地)

为实现hdfs中的文件下载到本地,首先应创建一个文件new_file,打开指定的文件,即打开new_file文件,然后使用copyBytes读文件,将数据读取到本地,最后关闭数据流。

@Override
    public void download(String file, OutputStream os) throws Exception 
	//请实现,把读出来的数据流写在本地
        Configuration conf=new Configuration();
        //配置NameNode地址
        URI uri=new URI(namenodeRpcUrl);
        //指定用户名,获取FileSystem对象
        FileSystem fs=FileSystem.get(uri,conf,"lu");
        //Path,指定待操作的文件或路径
        Path new_file = new Path(file);
        //打开指定的文件,读文件
        FSDataInputStream open = fs.open(new_file);
        //读文件
        IOUtils.copyBytes(open,os,conf);
        IOUtils.closeStream(open);
        System.out.println( "Download Successfully!" );
    

 

以上是关于hadoop后端——使用java数据流配置的主要内容,如果未能解决你的问题,请参考以下文章

hadoop后端——使用java数据流配置

我为什么从后端开发转到大数据开发(Hadoop/Spark)?

使用Ambari快速部署Hadoop大数据环境

后端程序员之路 47Hadoop hdfs

大数据概述 Hadoop配置

如何使用java代码设置amazon ami的hadoop配置