文档章节

评论管家之HDFS

海上明月共潮生
 海上明月共潮生
发布于 2017/07/03 20:07
字数 351
阅读 1
收藏 0

package com.movie.arith;

import java.io.IOException;
import java.text.SimpleDateFormat;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FSDataInputStream;
import org.apache.hadoop.fs.FSDataOutputStream;
import org.apache.hadoop.fs.FileStatus;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.hdfs.DistributedFileSystem;
import org.apache.hadoop.io.IOUtils;

/**
 * HDFS文件操作
 *
 */
public class HDFSFile {
    Configuration conf = new Configuration();
    private FileSystem hdfs;
    /**
     * 构建hdfs文件系统对象
     * 
     * @param hdfsPath
     * @throws IOException
     */
    public HDFSFile(Path hdfsPath) throws IOException{
        hdfs = hdfsPath.getFileSystem(conf);
    }
    /**
     * 创建目录
     * @param path
     * @throws IOException
     */
    public void mkDir(Path path) throws IOException{        
        hdfs.mkdirs(path);
    }
    /**
     * 上传文件
     * @param src
     * @param dst
     * @throws IOException
     */
    public void copyLocalToHdfs(Path src,Path dst) throws IOException{
        hdfs.copyFromLocalFile(src, dst);
    }
    /**
     * 删除文件
     * @param path
     * @throws IOException
     */
    @SuppressWarnings("deprecation")
    public void delFile(Path path) throws IOException{
        hdfs.delete(path);
    }
    /**
     * 读取文件内容
     * @param path
     * @throws IOException
     */
    public void readFile(Path path) throws IOException{
        //获取文件信息
        FileStatus filestatus = hdfs.getFileStatus(path);
        //FS的输入流
        FSDataInputStream in = hdfs.open(path);
        //用Hadoop的IOUtils工具方法来让这个文件的指定字节复制到标准输出流上
        IOUtils.copyBytes(in,System.out,(int)filestatus.getLen(),false);
        System.out.println();
    }
    /**
     * 得到文件的修改时间
     * @param path
     * @throws IOException
     */
    public void getModifyTime(Path path) throws IOException{
        FileStatus files[] = hdfs.listStatus(path);
        for(FileStatus file: files){
            //time = file.getModificationTime().
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
            String date = sdf.format(file.getModificationTime());
            System.out.println(file.getPath()+"\t"+date);
        }
    }
    /**
     * 在hdfs上创建文件并写入内容
     * @param path
     * @param content
     * @throws IOException
     */
    public void writeFile(Path path,String content) throws IOException{
        FSDataOutputStream os = hdfs.create(path);
        //以utf-8的格式写入文件
        os.write(content.getBytes("UTF-8"));
        os.close();
    }
    /**
     * 列出某一路径下所有的文件
     * @param path
     * @throws IOException
     */
    public void listFiles(Path path) throws IOException{
        hdfs = path.getFileSystem(conf);
        FileStatus files[] = hdfs.listStatus(path);
        int listlength=files.length;  
        for (int i=0 ;i<listlength ;i++){  
            if (files[i].isDir() == false) {  
                System.out.println("filename:"  
                        + files[i].getPath()  + "\tsize:"  
                        + files[i].getLen());  
            } else {  
                Path newpath = new Path(files[i].getPath().toString());  
                listFiles(newpath);  
            }  
        }  
    }
}
 

© 著作权归作者所有

上一篇: 评论管家系统
下一篇: 评论管家之MR
海上明月共潮生
粉丝 0
博文 4
码字总数 1130
作品 0
绥化
私信 提问
文档管家--docmaster

文档管家是基于 python + web.py开发的轻量文本在线发布工具,主要用于发布工具帮助文档、教程等内容。 主要功能: 后台内容管理、支持markdown语法、代码高亮、支持分项目管理文档、支持jqu...

114638571
2014/01/15
5K
0
【深圳聚会】OSChina 深圳聚会报名中 - 手机应用分享

深圳聚会详细地址:南山数字文化产业基地2楼IT茶馆 公交站:荔香公园 公交:42、233、368、81、78、350、373、21、369、390、234、327、机场10号线、M200、B786 地铁:罗宝线 桃园路站 900米...

虫虫
2011/11/21
4.5K
67
【深圳】开源中国 OSC 源创会第 5 期

本期图文回顾链接:http://www.oschina.net/question/12_33994 深圳聚会详细地址:南山数字文化产业基地2楼IT茶馆 公交站:荔香公园 公交:42、233、368、81、78、350、373、21、369、390、2...

红薯
2011/12/10
38
0
消息称腾讯成立团队研发杀毒

据消息人士透露,腾讯已经在内部成立杀毒软件研发项目团队,对杀毒方面进行研发。另有消息称该杀毒软件已经进入测试期,有望在近期推出。这意味着其与360之间或将引发更大的对抗。 数月前坊间...

鉴客
2010/11/02
1K
25
【深圳】开源中国 OSC 源创会第 5 期

本期图文回顾链接:http://www.oschina.net/question/12_33994 深圳聚会详细地址:南山数字文化产业基地2楼IT茶馆 公交站:荔香公园 公交:42、233、368、81、78、350、373、21、369、390、2...

红薯
2011/12/10
2
0

没有更多内容

加载失败,请刷新页面

加载更多

微课程 | 第六课《复杂查询》

https://v.youku.com/v_show/id_XNDQ2MDAzOTE2MA==.html 上一期我们通过基本拆分算法,展示基本配置是什么样的。现在来介绍下 dble 其他的一些功能。 dble 查询流程图 首先基本的 DML 我们已...

爱可生
10分钟前
2
0
在pad上点击输入框调出小键盘

在页面加载时加入: var asForm = System.Windows.Automation.AutomationElement.FromHandle(this.Handle); private void frmPadWIPCallMaterial_Load(object sender, Ev......

_Somuns
11分钟前
2
0
服务身份授权OpenIAM

使用OpenIAM作为服务间统一身份和资源授权的解决方案。它基于AWS的IAM模型设计,为服务接口提供统一管理了身份认证和资源授权管控能力。服务提供方可通过OpenIAM来实现接口访问的细粒度管控。...

ZH-JSON
17分钟前
2
0
远程调用----HttpClient连接池

学连接池首先要明白: 1.http连接池也不是万能的,过多的长连接会占用服务器资源,导致其他服务受阻 2.http连接池值适用于请求是经常访问同一主机(或同一接口)的情况下 3.并发数不高的情况下资源...

苗小喵
25分钟前
3
0
mybatis_plus一对一实体映射

场景:查询中间表对应的用户和角色,这里一条中间表数据分别只对应一个用户和一个角色。当然一般不会有这样的需求,这里只是举例一对一关系. 一、数据结构 1、用户表 2、角色表 3、中间表 二...

一个yuanbeth
31分钟前
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部