文档章节

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

没有更多内容

加载失败,请刷新页面

加载更多

下一页

kernel version does not match DSO version

错误信息: kernel version 384.11 does not match DSO version 384.130.0 原因是: cuda driver版本太低,不匹配DSO 简单有效的修复方法,升级nvidia driver, 步骤如下: 1. google seach ...

刘小米
今天
0
0
maven坐标和依赖

一、maven坐标详解 <groupId>com.fgt.club</groupId><artifactId>club-common-service-facade</artifactId><version>3.0.0</version><packaging>jar</packaging> maven的坐标元素说......

老韭菜
今天
1
0
springmvc-servlet.xml配置表功能解释

问:<?xml version="1.0" encoding="UTF-8" ?> 答: xml version="1.0"表示是此xml文件的版本是1.0 encoding="UTF-8"表示此文件的编码方式是UTF-8 问:<!DOCTYPE beans PUBLIC "-//SPRING//......

隐士族隐逸
今天
1
0
基于TP5的微信的公众号获取登录用户信息

之前讲过微信的公众号自动登录的菜单配置,这次记录一下在TP5项目中获取自动登录的用户信息并存到数据库的操作 基本的流程为:微信设置自动登录的菜单—>访问的URL指定的函数里获取用户信息—...

月夜中徘徊
今天
0
0
youTrack

package jetbrains.teamsys.license.runtime; 计算lis package jetbrains.ring.license.reader; 验证lis 安装后先不要生成lis,要把相关文件进行替换 ring-license-checker-1.0.41.jar char......

max佩恩
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部