zoukankan      html  css  js  c++  java
  • hadoop的hdfs文件操作实现上传文件到hdfs

    这篇文章主要介绍了使用hadoop的API对HDFS上的文件访问,其中包括上传文件到HDFS上、从HDFS上下载文件和删除HDFS上的文件,需要的朋友可以参考下
    hdfs文件操作操作示例,包括上传文件到HDFS上、从HDFS上下载文件和删除HDFS上的文件,大家参考使用吧

    复制代码 代码如下:
    import org.apache.hadoop.conf.Configuration;
    import org.apache.hadoop.fs.*;

    import java.io.File;
    import java.io.IOException;
    public class HadoopFile {
    private Configuration conf =null;

    public HadoopFile(){
    conf =new Configuration();
    conf.addResource(new Path("/hadoop/etc/hadoop/core-site.xml"));
    }

    public HadoopFile(Configuration conf){
    this.conf =conf;
    }

    public boolean sendFile(String path,String localfile){
    File file=new File(localfile);
    if (!file.isFile()) {
    System.out.println(file.getName());
    return false;
    }
    try {
    FileSystem localFS =FileSystem.getLocal(conf);
    FileSystem hadoopFS =FileSystem.get(conf);
    Path hadPath=new Path(path);

    FSDataOutputStream fsOut=hadoopFS.create(new Path(path+"/"+file.getName()));
    FSDataInputStream fsIn=localFS.open(new Path(localfile));
    byte[] buf =new byte[1024];
    int readbytes=0;
    while ((readbytes=fsIn.read(buf))>0){
    fsOut.write(buf,0,readbytes);
    }
    fsIn.close();
    fsOut.close();

    FileStatus[] hadfiles= hadoopFS.listStatus(hadPath);
    for(FileStatus fs :hadfiles){
    System.out.println(fs.toString());
    }
    return true;
    } catch (IOException e) {
    e.printStackTrace();
    }
    return false;
    }

    public boolean delFile(String hadfile){
    try {

    FileSystem hadoopFS =FileSystem.get(conf);
    Path hadPath=new Path(hadfile);
    Path p=hadPath.getParent();
    boolean rtnval= hadoopFS.delete(hadPath, true);

    FileStatus[] hadfiles= hadoopFS.listStatus(p);
    for(FileStatus fs :hadfiles){
    System.out.println(fs.toString());
    }
    return rtnval;
    } catch (IOException e) {
    e.printStackTrace();
    }
    return false;
    }


    public boolean downloadFile(String hadfile,String localPath){

    try {
    FileSystem localFS =FileSystem.getLocal(conf);
    FileSystem hadoopFS =FileSystem.get(conf);
    Path hadPath=new Path(hadfile);

    FSDataOutputStream fsOut=localFS.create(new Path(localPath+"/"+hadPath.getName()));
    FSDataInputStream fsIn=hadoopFS.open(hadPath);
    byte[] buf =new byte[1024];
    int readbytes=0;
    while ((readbytes=fsIn.read(buf))>0){
    fsOut.write(buf,0,readbytes);
    }
    fsIn.close();
    fsOut.close();

    return true;
    } catch (IOException e) {
    e.printStackTrace();
    }
    return false;
    }
    }


    详细出处参考:http://www.jb51.net/article/48104.htm

  • 相关阅读:
    关于李约瑟难题的思考
    《MDX解决方案(第2版)》实例数据部署过程
    在SQL SERVER 2008种使用表值参数
    解决了一个想了很久的问题
    发现可以在两个数据库中共享只读文件组
    java 包位置
    单元测试java
    Cannot determine build data storage root for project
    Vue——绑定值
    浪潮之巅第八章 — 没落的贵族(摩托罗拉)
  • 原文地址:https://www.cnblogs.com/zhwl/p/3655686.html
Copyright © 2011-2022 走看看