设为首页 加入收藏

TOP

HDFS Java开发
2014-11-24 10:24:22 】 浏览:2006
Tags:HDFS Java 开发

HDFS Java开发
搭建HDFS开发环境
1、导入Hadoop Jar包

2、建立resources文件夹,加配置文件(core-site.xml hdfs-site.xml)

3、new Configuration 进行操作

Configuration cfg = new Configuration();

cfg.addResource();//添加新的资源配置文件

cfg.get(“fs.default.name”);

cfg.get(“myInt”, 123);

FileSystem抽象
建立文件/文件夹

删除文件/文件夹

读取文件

写入文件

修改文件/文件夹名字

移动/复制

javadoc,操作和之前介绍的命令行很类似。

FileSystem fs = FileSystem.get(cfg); //根据配置得到文件系统

Path path = new Path(“a”); //如果以/开头表示绝对路径,否则相对

FSDataOutputStream fdos = fs.create(path); //根据路径创建文件 得到一个流 会递归创建

fs.create(path, 是否递归);

fs.create(path,复制几份);

fdos.close();

fdos.writeBytes();//写字节

fs.mkdirs(path); 创建目录 会递归

fs.delete(path, 是否递归);

fs.delete();

不支持随机修改 不支持并非修改 但支持追加

为了支持追加,需要配置:

dfs.support.append

true

Path path = new Path(“路径”);

FSDataIOutputStream fdos = fs.append(path); //追加

fdos.write……即可

fdos.flush();//刷出数据

FSDataInputStream fdis = fs.open(path);

Text line = new Text();

LineReader reader = new LineReader(fdis); //一行一行的读

while(reader.readLine(line) > 0) {

System.out.println(line);//输出

}

fdis.close();

fs.rename(oldPath, newPath); //重命名

复制:

Path localPath = new Path(……);

Path hdfsPath = new Path(……);

fs.copyFromLocalFile (localPath, hdfsPath); 默认不删除本地 不覆盖hdfs

fs.copyFromLocalFile (false, localPath, hdfsPath); false表示不删除local的

fs.copyFromLocalFile (false,false, localPath, hdfsPath); false表示不删除local的 也不覆盖

同理 还有一个copyToLocalFile 复制hdfs到本地,API完全类似

Path localPath = new Path(……);

Path hdfsPath = new Path(……);

fs. copyToLocalFile(hdfsPath, localPath); 默认不删除hdfs不覆盖本地

fs. copyToLocalFile(false, hdfsPath, localPath); false表示不删除local的

fs. copyToLocalFile(false,false, localPath, hdfsPath); false表示不删除local的 也不覆盖

移动(一定先删除老的 再移动)

Path localPath = new Path(……);

Path hdfsPath = new Path(……);

fs.moveFromLocalFile (localPath, hdfsPath);

fs.moveFormLocalFile(Path数组, hdfs目录);

同理 还有一个moveToLocalFile移动hdfs到本地,API完全类似

Path localPath = new Path(……);

Path hdfsPath = new Path(……);

fs.moveToLocalFile (hdfsPath, localPath);

fs. moveToLocalFile (hdfs目录数组, 本地目录);

其他

fs.getDefaultBlockSize() 得到默认的block块大小

fs.getUri() hdfs的路径

fs.getDefaultReplication() 备份数量

fs.getWorkingDirectory 默认工作目录uri

fs.getHomeDirectory

fs.listStatus(hdfs目录); 得到当前目录下所有文件/文件夹信息

Path path = new Path(……);

path.depth();//深度

path.getParent();//父亲

FileUtil API详解
FileUtil fileUtil = new FileUtil();

fileUtil.copy(本地文件, FileSystem, hdfs Path, 是否删除源, Configuration); //从本地到HDFS

fileUtil.copy(FileSystem, hdfs Path, 本地文件, 是否删除源, Configuration);//从HDFS到本地

还可以从一个HDFS到另一个HDFS

fileUtil.copy(源FileSystem, 源Path, 目标FileSystem, 目标Path, 是否删除源, Configuration)

合并目录(很不错,java里没这样的东西)

FileUtil.copyMerge(源FileSystem, 源Path, 目标FileSystem, 目标Path, 是否删除源, Configuration, “备注”)

fileUtil.fullyDelete(new File(“……”)); //本地的完全删除

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇金额查错:某财务部门结账时发现总.. 下一篇设计模式(一) -- 简单工厂

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目