Hadoop权威指南:HDFS-目录,查询文件系统,删除文件

目录

FileSystem实例提供了创建目录的方法

public boolean mkdirs(Path f) throws IOException

这个方法一次性创建所有必要但还没有的父目录

通常不需要显式创建一个目录,因为调用create()方法写入文件时会自动创建所有父目录

查询文件系统

文件元数据:FileStatus

  • FileStatus类封装了文件系统中文件和目录的元数据包括文件长度,块大小,副本,修改时间,所有者,权限信息
  • FileSystemgetFileStatus方法用于获取文件或目录的FileStatus对象
  • 使用exists()方法检查文件或者目录是否存在

列出文件

使用FileSystemlistStatus()方法

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);
}
  • pathFilterjava.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);
}
}

删除数据

使用 FileSystemdelete() 方法可以永久性删除文件或目录

public boolean delete(Path f, boolean recursive) throws IOException

  • 如果f是一个文件或空目录, 那么 recursive 的值会被忽略
  • 只有在 recursive 值为 true 时,非空目录及其内容才会被删除, 否则会抛出IOException异常

  1. 在一个表达式中使用通配符来匹配多个文件是比较方便的,无需列举每个文件和目录来指定输入,该操作称为"通配" ↩︎

Hadoop权威指南:HDFS-目录,查询文件系统,删除文件的更多相关文章

  1. Hadoop权威指南:数据完整性

    Hadoop权威指南:数据完整性 [TOC] 常用的错误检测码是CRC-32(循环冗余校验) HDFS的数据完整性 HDFS会对写入的所有数据计算校验和,并在读取数据时验证校验和 datanode负责 ...

  2. Hadoop权威指南:压缩

    Hadoop权威指南:压缩 [TOC] 文件压缩的两个好处: 减少储存文件所需要的磁盘空间 加速数据在网络和磁盘上的传输 压缩格式总结: 压缩格式 工具 算法 文件扩展名 是否可切分 DEFLATE ...

  3. Hadoop权威指南(中文版-带目录索引)pdf电子书

      Hadoop权威指南(中文版-带目录索引)pdf电子书下载地址:百度网盘点击下载:链接:https://pan.baidu.com/s/1E-8eLaaqTCkKESNPDqq0jw 提取码:g6 ...

  4. Hadoop权威指南:HDFS-Hadoop存档

    Hadoop权威指南:HDFS-Hadoop存档 [TOC] 每个文件按块方式存储, 每个块的元数据存储在namenode的内存中 Hadoop存档文件或HAR文件是一个更高效的文件存档工具,它将文件 ...

  5. Hadoop权威指南:HDFS-写入数据

    Hadoop权威指南:HDFS-写入数据 FileSystem类有一系列的新建文件的方法.最简单的方法是给准备建的文件指定一个Path对象,然后返回一个用于写入数据的输出流: public FSDat ...

  6. Hadoop权威指南学习笔记三

    HDFS简单介绍 声明:本文是本人基于Hadoop权威指南学习的一些个人理解和笔记,仅供学习參考.有什么不到之处还望指出,一起学习一起进步. 转载请注明:http://blog.csdn.net/my ...

  7. Hadoop权威指南:通过FileSystem API读取数据

    Hadoop权威指南:通过FileSystem API读取数据 [TOC] 在Hadoop中,FileSystem是一个通用的文件系统API 获取FileSystem实例的几个静态方法 public ...

  8. Hadoop权威指南:从Hadoop URL读取数据

    [TOC] Hadoop权威指南:从Hadoop URL读取数据 使用java.net.URL对象从Hadoop文件系统读取文件 实现类似linux中cat命令的程序 文件名 HDFSCat.java ...

  9. Hadoop权威指南:HDFS-数据流

    Hadoop权威指南:HDFS-数据流 [TOC] 剖析文件读取 客户端通过调用FileSystem对象的open()方法来打开希望读取的文件,对于HDFS来说, 这个对象是分布式文件系统的一个实例 ...

随机推荐

  1. 说说Android应用的persistent属性

    转载地址:http://my.oschina.net/youranhongcha/blog 摘要 在Android系统中,有一种永久性应用.它们对应的AndroidManifest.xml文件里,会将 ...

  2. 一道题看懂OC的文件管理:NSFileManager,计算文件包含内存大小

    计算文件夹下所有文件的大小 // 查看错误信息 __autoreleasing NSError *error; // 文件管理对象 NSFileManager *manager = [NSFileMa ...

  3. python字符串,列表,字典的常用方法

    本篇内容 字符串的常用方法 列表的常用方法 字典的常用方法 字符串的常用方法 center 字符居中显示,指定字符串长度,填充指定的填充字符 string = "40kuai" p ...

  4. 如何深入学习CSS

    学习CSS有了一定基础后,有的人会觉得好象没有什么学的.因为知道一些基本的理论性的东西.CSS说它容易是因为它的知识点有限.说它难学就在于各浏览器对CSS的支持程度不同.如何深入学习我给出以下几点见意 ...

  5. LPC1768的IIS通讯

    IIS是飞利浦公司定义的一种用于音频传输的数字总线,LPC1768支持该总线, I2S接口为一条3线串行总线,含有1根数据线.1根时钟线和1根字选择信号线.基本的I2S连接具有一个主机(其总是为主机) ...

  6. eclipse手动安装svn和maven

    一.给Eclipse安装SVN,最常见的有两种方式:手动方式和使用安装向导方式.具体步骤如下: 方式一:手动安装 1.从官网下载site-1.6.9.zip文件,网址是:subclipse.tigri ...

  7. Chapter5 – 碰撞检测

    主人公能够放子弹了,虽然子弹看起来很美,但是怎么样来打到妖怪? 在这一章我们介绍一下最简单的碰撞检测方法去实现它. 首先第一个,我们有必要保存每个妖怪和子弹的指针,来够追踪他们的位置. 在这个游戏中我 ...

  8. Sublime Text 快捷键--持续更新

    快捷键 功能 说明 ctrl+D 选取一个单词连续按组合键会选择页面所有相同的这个单词   ctrl+Z 撤销上一个操作   ctrl+Y 恢复上一个操作   ctrl+shift+F 底部打开搜索全 ...

  9. 安卓canvas操作的总结

    2014.07.03 使用canvas绘图 需求:公司需要绘制波形图,类似数学上的正弦波,一条是参考值,一条是实际曲线 解决方法:采用canvas绘图.保存为图片,以供导出 这里提供一个学习的demo ...

  10. java求两个集合的差集

    public static void main(String[] args) {Set set = new HashSet();Set set1 = new HashSet();set.add(&qu ...