hadoop文件上传下载(java实现工具类HDFSUtil)

原创 2018年04月16日 00:01:43

HDFSUtil

  • HDFS 基础开发,待补充、重构、优化

实验环境

  • hadoop 伪分布式环境
  • 将eclipse根目录下local.txt文件上传至HDFS
  • 将HDFS系统中local.txt文件下载至eclipse根目录下

代码

package Utils;

import java.io.BufferedInputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.URI;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FSDataInputStream;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IOUtils;
import org.apache.hadoop.util.Progressable;

/**
 * 
 * @ClassName: HDFSUtil
 * 
 * @Description: TODO  HDFS系统与本地文件交互
 * 
 * @author kngines
 * 
 * @date 2018年4月15日
 */

public class HDFSUtil {

    private static String _URI = "hdfs://192.168.1.103:9000";

    public static void main(String[] args) {
        try {
            HDFSUtil.uploadFileFromLocation("local.txt", "/user/hadoop/cloud.txt");  // 本地文件上传
            HDFSUtil.downFileFromHDFS("cloudFromHDFS.txt", "/user/hadoop/cloud.txt");  // 远程文件下载
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }

    }
    /**
     * 
     * @Title: uploadFileFromLocation 
     * @Description: TODO 本地文件上传至 HDFS
     * @param localFName  本地文件,eclispe项目根目录下
     * @param hdfsFName  HDFS系统下文件
     * @throws IOException void
     * @author Khgines
     * @date 2018年4月15日下午11:52:43
     */
    public static void uploadFileFromLocation(String localFName, String hdfsFName) throws IOException {

        // 云端HDFS文件路径 user/hadoop
        String hdfsURI = _URI + hdfsFName;
        InputStream in = new BufferedInputStream(new FileInputStream(localFName));

        Configuration conf = new Configuration();  // 定义conf对象
        FileSystem fs = FileSystem.get(URI.create(hdfsURI), conf);  // 创建文件系统 对象
        OutputStream out = fs.create(new Path(hdfsURI), new Progressable() {  // 输出流
            @Override
            public void progress() {
                System.out.println("上传完成一个文件到HDFS");
            }
        });
        IOUtils.copyBytes(in, out, 1024, true);  // 连接两个流,形成通道,使输入流向输出流传输数据

        in.close();
        fs.close();
        out.close();
    }

    /**
     * 
     * @Title: downFileFromHDFS 
     * @Description: TODO HDFS 文件下载
     * @param localFName  本地文件路径
     * @param hdfsFName  HDFS 文件路径
     * @throws FileNotFoundException
     * @throws IOException void
     * @author Khgines
     * @date 2018年4月15日下午11:53:39
     */
    private static void downFileFromHDFS(String localFName, String hdfsFName) throws FileNotFoundException, IOException {

        String hdfsFPath = _URI+hdfsFName;
        Configuration conf = new Configuration();  // 获取conf配置
        FileSystem fs = FileSystem.get(URI.create(hdfsFPath), conf);  // 创建文件系统对象
        FSDataInputStream outHDFS = fs.open(new Path(hdfsFPath));  // 从HDFS读出文件流
        OutputStream inLocal = new FileOutputStream(localFName);  // 写入本地文件
        IOUtils.copyBytes(outHDFS, inLocal, 1024, true);

        fs.close();
        outHDFS.close();
        inLocal.close();
    }

}

References

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_24452475/article/details/79955312

hadoop hdfs 应用API --HDFSUtil

hdfsAPI
  • Evennn
  • Evennn
  • 2016-08-02 14:50:46
  • 1039

hadoop实战之hdfs常用操作工具类

本文是hdfs常用的操作工具类,可直接复用! import java.io.IOException; import org.apache.hadoop.conf.Configuration; ...
  • zhaojianting
  • zhaojianting
  • 2017-10-13 11:25:21
  • 296

Java实现文件上传下载工具类

本篇文章在Eclipse环境下采用Java语言实现文件上传下载工具类。上传时,为避免文件名在服务器中重复,采用“服务器时间(定义到毫秒)+文件名+文件后缀“的方式作为服务器上的文件名;下载过程中利用 ...
  • jianyuerensheng
  • jianyuerensheng
  • 2017-10-10 08:52:54
  • 477

文件操作工具类,支持文件上传和下载及断点续传

  • 2014年09月18日 16:34
  • 7KB
  • 下载

java SFTP下载工具类 可上传,下载

  • 2014年10月23日 14:27
  • 17KB
  • 下载

工具类文件上传与下载代码

一、工具类文件上传与下载代码: public class FileOperateUtil { private static final String REALNAME = "realNam...
  • LeiXiaoTao_Java
  • LeiXiaoTao_Java
  • 2017-01-19 17:37:22
  • 1137

JavaWeb中文件上传最强工具类

  • 2016年06月27日 20:12
  • 5KB
  • 下载

hadoop-hdfs-文件工具类(Scala)

package com.avcdata.spark.job.utilimport java.io.{File, FileInputStream, FileOutputStream, IOExcepti...
  • qq_16038125
  • qq_16038125
  • 2017-03-14 16:34:04
  • 1793

java上传和下载文件工具类

1.如果不存在,创建文件保存目录 package upUtil; import java.io.File; public class FileUitl { public static void...
  • u013263553
  • u013263553
  • 2014-12-09 15:37:02
  • 661

使用commons-net实现FTP文件上传与下载工具类

java使用commons-net包的FTPClient实现文件的上传下载工具类。 FTPUtil.java package org.nercita.ltxx.testftp; import j...
  • zmx729618
  • zmx729618
  • 2017-10-20 09:47:52
  • 617
收藏助手
不良信息举报
您举报文章:hadoop文件上传下载(java实现工具类HDFSUtil)
举报原因:
原因补充:

(最多只允许输入30个字)