文档章节

评论管家之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);  
            }  
        }  
    }
}
 

© 著作权归作者所有

共有 人打赏支持
海上明月共潮生
粉丝 0
博文 4
码字总数 1130
作品 0
绥化
文档管家--docmaster

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

114638571
2014/01/15
2.8K
0
消息称腾讯成立团队研发杀毒

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

鉴客
2010/11/02
1K
25
Hadoop 生态圈介绍

简介 Hadoop 是一个能够处理海量数据的分布式系统基础软件框架,理论上能够通过增加计算节点以处理无限增长的数据,由java写成。其作者是 Doug Cutting,得益于谷歌的Map/Reduce计算模型和G...

bochs
2016/11/17
15
0
从腾讯致歉读懂杀毒软件市场的相爱相杀

  【IT168 评论】12月25日,当大家还沉浸在圣诞节的喜悦中时,火绒安全向腾讯发起“挑战”,对腾讯旗下产品进行拦截,其理由是腾讯旗下软件存在捆绑推广的过激侵权行为。   说实话,小编...

it168网站
2017/12/26
0
0
随手记迎来第八年,想做的不仅是一个“账本”角色

雷锋网AI金融评论6月23日消息,随手集团“随手八年,花漾年华”全民VIP狂欢节在深圳举行,300多名随手粉丝和随手团队在公司总部一起欢庆了她的八周岁生日。 活动开场,个人理财专家毛丹平博士...

周蕾
06/23
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Coding and Paper Letter(三十九)

资源整理。 1 Coding: 1.Python库benchmark rio s3,用于在访问S3上的文件时对Rasterio / GDAL的多线程性能进行基准测试的工具。 benchmark rio s3 2.Pangeo-Binder Cookiecutter模板。 cook...

胖胖雕
33分钟前
1
0
Promise 对象

Promise(承诺) 的含义 Promise 是异步编程的一种解决方案,比传统的解决方案——回调函数和事件——更合理和更强大。它由社区最早提出和实现,ES6 将其写进了语言标准,统一了用法,原生提供...

简心
35分钟前
0
0
让UI设计师崩溃的瞬间,你经历过哪些?

隔行如隔山,这句话人人耳熟能详,但其实隔行并不可怕,大家各谋其事,各尽其职,倒也互不打扰,真正可怕的是,是内行还要受外行指点江山,而最难的部分,便是那沟通。流畅的沟通,和声细语,...

mo311
37分钟前
1
0
python进制转换

#进制转换print(bin(10)) #十进制转换成二进制print(oct(10)) #十进制转换成八进制print(hex(10)) #十进制转换成十六进制print(int('1010',2)) #二进制转十进制print(int(...

fadsaa
48分钟前
3
0
syntax error near unexpected token

最近不断重复在虚拟机CentOS测试安装gitlab,因为gitlab有一个脚本需要饭强才能下载,于是我先在windows下载好再上传到虚拟机,可是执行脚本的时候提示“syntax error near unexpected toke...

W_Lu
57分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部