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

  • 相关阅读:
    Laravel 手动分页实现
    大话Web-Audio-Api
    关于audio标签播放跨域的问题
    jquery的命名空间
    正则表达式的应用
    七天学会ASP.NET MVC (六)——线程问题、异常处理、自定义URL 【转】
    七天学会ASP.NET MVC (五)——Layout页面使用和用户角色管理 【转】
    七天学会ASP.NET MVC (四)——用户授权认证问题 【转】
    七天学会ASP.NET MVC (三)——ASP.Net MVC 数据处理 【转】
    七天学会ASP.NET MVC (二)——ASP.NET MVC 数据传递 【转】
  • 原文地址:https://www.cnblogs.com/zhwl/p/3655686.html
Copyright © 2011-2022 走看看