Hadoop权威指南:HDFS-目录,查询文件系统,删除文件
Hadoop权威指南:HDFS-目录,查询文件系统,删除文件
目录
FileSystem实例提供了创建目录的方法
public boolean mkdirs(Path f) throws IOException
这个方法一次性创建所有必要但还没有的父目录
通常不需要显式创建一个目录,因为调用create()方法写入文件时会自动创建所有父目录
查询文件系统
文件元数据:FileStatus
FileStatus类封装了文件系统中文件和目录的元数据包括文件长度,块大小,副本,修改时间,所有者,权限信息FileSystem的getFileStatus方法用于获取文件或目录的FileStatus对象- 使用
exists()方法检查文件或者目录是否存在
列出文件
使用FileSystem的listStatus()方法
public FileStatus[] listStatus(Path f) throws IOException
public FileStatus[] listStatus(Path f, PathFilter filter) throws IOException
public FileStatus[] listStatus(Path[] files) throws IOException
public FileStatus[] listStatus(Path[] files, PathFilter filter) throws IOException
- 传入的Path参数可以是一个文件,也可以是一个目录
- 允许使用PathFilter来限制匹配的文件和目录
显示Hadoop文件系统中一组路径的文件信息
代码
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileStatus;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.FileUtil;
import org.apache.hadoop.fs.Path;
import java.io.IOException;
import java.net.URI;
public class ListStatus {
public static void main(String[] args) throws IOException {
String uri = args[0];
Configuration conf = new Configuration();
FileSystem fs = FileSystem.get(URI.create(uri), conf);
Path[] paths = new Path[args.length];
for (int i=0; i < paths.length; ++i) {
paths[i] = new Path(args[i]);
}
FileStatus[] status = fs.listStatus(paths);
// stat2Path2方法将一个FileStatus对象数组转换为一个Path对象数组
Path[] listedPaths = FileUtil.stat2Paths(status);
for (Path p : listedPaths) {
System.out.println(p);
}
}
}
编译
javac ListStatus.java
运行
hadoop ListStatus hdfs://localhost:9000/user/hadoop/input hdfs://localhost:9000/user/hadoop/output
文件模式
Hadoop为执行通配[1]提供了两个FileSystem方法
public FileStatus[] globStatus(Path pathPattern) throws IOException
public FileStatus[] globStatus(Path pathPattern, PathFilter filter) throws IOException
globStatus()方法返回与其路径匹配于指定模式的所有文件的FileStatus对象数组,并按路径排序PathFilter命令作为可选项可以进一步对匹配结果进行限制
Hadoop支持的通配符与Unix bash的相同
| 通配符 | 名称 | 匹配 |
|---|---|---|
| * | 星号 | 匹配0或多个字符 |
| ? | 问号 | 匹配单一字符 |
| [ab] | 字符类 | 匹配{a,b}集合中的一个字符 |
| [^ab] | 非字符类 | 匹配非{a,b}集合中的一个字符 |
| [a-b] | 字符范围 | 匹配一个在a-b范围内的字符(包括a,b),a在字典顺序上要小于或等于b |
| [^a-b] | 非字符范围 | 匹配一个不在a-b范围内的字符(包括a,b),a在字典顺序上要小于或等于b |
| {a,b} | 或选择 | 匹配包含a或b中的一个的表达式 |
| \c | 转义字符 | 匹配元字符c |
PathFilter对象
- 通配符模式并不总能描述我们想要访问的文件集
FileSystem中的listStatus()和globStatus()方法提供了可选的PathFilter对象, 以编程方式控制通配符
package org.apache.hadoop.fs;
public interface PathFilter {
boolean accept(Path path);
}
pathFilter和java.io.FileFilter一样,是Path对象, 而不是File对象
PathFilter用于排除匹配正则表达式的路径
代码
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.fs.PathFilter;
public class RegexExcludePathFilter implements PathFilter {
private final String regex;
public RegexExcludePathFilter(String regex) {
this.regex = regex;
}
@Override
public boolean accept(Path path) {
return !path.toString().matches(regex);
}
}
删除数据
使用 FileSystem 的 delete() 方法可以永久性删除文件或目录
public boolean delete(Path f, boolean recursive) throws IOException
- 如果f是一个文件或空目录, 那么
recursive的值会被忽略 - 只有在
recursive值为true时,非空目录及其内容才会被删除, 否则会抛出IOException异常
在一个表达式中使用通配符来匹配多个文件是比较方便的,无需列举每个文件和目录来指定输入,该操作称为"通配" ↩︎
Hadoop权威指南:HDFS-目录,查询文件系统,删除文件的更多相关文章
- Hadoop权威指南:数据完整性
Hadoop权威指南:数据完整性 [TOC] 常用的错误检测码是CRC-32(循环冗余校验) HDFS的数据完整性 HDFS会对写入的所有数据计算校验和,并在读取数据时验证校验和 datanode负责 ...
- Hadoop权威指南:压缩
Hadoop权威指南:压缩 [TOC] 文件压缩的两个好处: 减少储存文件所需要的磁盘空间 加速数据在网络和磁盘上的传输 压缩格式总结: 压缩格式 工具 算法 文件扩展名 是否可切分 DEFLATE ...
- Hadoop权威指南(中文版-带目录索引)pdf电子书
Hadoop权威指南(中文版-带目录索引)pdf电子书下载地址:百度网盘点击下载:链接:https://pan.baidu.com/s/1E-8eLaaqTCkKESNPDqq0jw 提取码:g6 ...
- Hadoop权威指南:HDFS-Hadoop存档
Hadoop权威指南:HDFS-Hadoop存档 [TOC] 每个文件按块方式存储, 每个块的元数据存储在namenode的内存中 Hadoop存档文件或HAR文件是一个更高效的文件存档工具,它将文件 ...
- Hadoop权威指南:HDFS-写入数据
Hadoop权威指南:HDFS-写入数据 FileSystem类有一系列的新建文件的方法.最简单的方法是给准备建的文件指定一个Path对象,然后返回一个用于写入数据的输出流: public FSDat ...
- Hadoop权威指南学习笔记三
HDFS简单介绍 声明:本文是本人基于Hadoop权威指南学习的一些个人理解和笔记,仅供学习參考.有什么不到之处还望指出,一起学习一起进步. 转载请注明:http://blog.csdn.net/my ...
- Hadoop权威指南:通过FileSystem API读取数据
Hadoop权威指南:通过FileSystem API读取数据 [TOC] 在Hadoop中,FileSystem是一个通用的文件系统API 获取FileSystem实例的几个静态方法 public ...
- Hadoop权威指南:从Hadoop URL读取数据
[TOC] Hadoop权威指南:从Hadoop URL读取数据 使用java.net.URL对象从Hadoop文件系统读取文件 实现类似linux中cat命令的程序 文件名 HDFSCat.java ...
- Hadoop权威指南:HDFS-数据流
Hadoop权威指南:HDFS-数据流 [TOC] 剖析文件读取 客户端通过调用FileSystem对象的open()方法来打开希望读取的文件,对于HDFS来说, 这个对象是分布式文件系统的一个实例 ...
随机推荐
- 微信小程序开发入门教程
做任何程序开发要首先找到其官方文档,微信小程序目前还在邀请内测阶段,目前官方放出了部分开发文档,经过笔者一天的查看和尝试,感觉文档并不全面,但是通过这些文档已经能够看出其大概面貌了.闲话不多说,我们先 ...
- IOS中集合视图UICollectionView中DecorationView的简易使用方法
转载自: http://www.it165.net/pro/html/201312/8575.html Decoration View是UICollectionView的装饰视图.苹果官方给的案例 ...
- POJ 1015 Jury Compromise
感觉此题略难...... 背包问题.据说有一种二维DP的写法是错的.亲测,背包做法无误. dp[i][j][k]表示前i个物品,选择j个,差值为k的情况下获得的最大总和 dp[i][j][k]=max ...
- HMM的概率计算问题和预测问题的java实现
HMM(hidden markov model)可以用于模式识别,李开复老师就是采用了HMM完成了语音识别. 一下的例子来自于<统计学习方法> 一个HMM由初始概率分布,状态转移概率分布, ...
- jQuery学习笔记(二)
1. 基本选择器 #id ("#one") .class $(".two") element (根据给定的元素名匹配元素) $("div& ...
- JDBC操作数据时中文乱码
/** * DB地址 */ private static final String DB_URL="jdbc:mysql://localhost:3306/db_book?useUnicod ...
- myeclipse的常用快捷键
创建一个类 Alt+Shift+N,C,输入Demo,回车 创建类属性 按3次下方向键,回车,输入String name;,回车 创建构造器 Alt+Shift+S,O,回车 创建getter/set ...
- IOS9中联系人对象的使用及增删改查操作的函数封装
之前克服重重困难把IOS9中新的类联系人搞明白了,现在把增删改查封装成了函数,如下: // // ViewController.m // IOS9中联系人CNContact的使用 // // Crea ...
- IOS开发-UI学习-使用UIImageView控件制作动画
先添加40张tomcat的图片到资源列表中:名称为cat_eat0000.jpg到cat_eat0039.jpg. 1.定义所需控件 // 定义按钮,图片控件.可变数组对象 UIButton *act ...
- html&&css 基础知识笔记
diV有 Class.Style.title.ID 等属性. 1.margin 空出边缘 margin:上 下 左 右(按顺时针顺序,缺少某一方向则对称) 2.border 边框(三要素:像素 形状 ...