hadoop中与文件读取相关的类FSDataInputStream、FileSystem 及其方法
来源:互联网 发布:淘宝创意礼品店 编辑:程序博客网 时间:2024/06/06 09:53
一、从Hadoop URL 中读取数据
使用java.net.URL对象打开一个数据流
InputStream in = new URL("hdfs://host/path").openStream();
二、FileSystem 对象
取得FileSystem实例有两种静态方法:
(1)public static FileSystem get(Configuration conf)
//Configuration对象封装了一个客户端或服务器的配置,这是用类路径读取而来的
//返回默认文件系统(在conf/core-site.xml中设置,如果没有设置过,则是默认的本地文件系统)
(2)public static FileSystem get (URI uri,Configuration conf)
//参数URI指定URI方案及决定所用文件系统的权限,如果没有指定方案,则退回默认的文件系统
三、open()方法
public FSDataInputStream open(path f)
//该方法默认使用4kb的缓冲大小
public abstract FSDataInputStream open(Path f, int bufferSize)
//第二个参数指定缓冲大小
//open方法实际返回的是一个FSDataInputStream,这个类是java.io.DataInputStream的一个子类,支持随机访问,能从流中任意位置对其数据。
四、FSDataInputStream类实现了Seekable接口
Seekable接口允许在文件中定位seek()方法,提供一个查询方法,用于查询当前位置相对于文件开始处的偏移量getPos()。
seekToNewSource(long targetPos)在应用程序中并不常用,此方法用来切换到数据的另一个副本并在新的副本中找寻targetPos指定的位置。HDFS内部就采用这样的方法在数据节点故障时为客户端提供可靠的数据输入流。
五、FSDataInputStream类实现了PositionedReadable接口
public int read(long position,byte[] buffer,int offset,int length)
//read()方法指定position读取指定长度的字节放入缓冲区buffer的指定偏移量offset,返回值是读到的字节数。
public int readFully(long position,byte[] buffer,int offset,int length)
//该方法读出字节length指定的数据到buffer。
public int readFully(long position,byte[] buffer)
//只接受buffer字节数组的版本中,再读取buffer.length字节。
所有这些方法会保留文件当前位置并且是线程安全的,因此它们提供了在读取文件(可能是元数据)的主要部分时访问其他部分的便利方法。
注意,seek()是相对高开销的操作,需要慎重使用。
六、创建文件的方法
(1)public FSDataOutputStream create(Path f)
//该方法如果没有文件,就会自动创建文件路径,所以最好用exists()检查父目录是否存在。
hadoop.util中有个Progressable的接口中,有个progress()方法,可以被告知数据写入数据节点的进度。
public FSDataOutputStream append(Path f)
//该append()方法允许一个写入者打开已有文件并在其末尾写入数据。HDFS支持,但S3不支持。
七、创建目录
public boolean mkdirs(Path f)
八、文件元数据:Filestatus
(1)FileStatus类封装了文件系统镇南关文件的目录和元数据,包括文件长度、块大小、副本、修改时间、所有者以及许可信息。
(2)getFileStatus()提供了一个获取一个文件或目录的状态对象的方法。大家可以通过看源代码看看它的信息参数。
(3)listSatus()能够列出目录的内容。
(4)globStatus(Path pathPattern,PathFilter filter)使用通配符在一个表达式中核对多个文件。
(5)PathFilter对象 ,通配格式不是总能描述我们想要访问的文件集合。listStatus()和globStatus()方法提供了可选PathFilter对象,使我们可以通过编程方式控制匹配。
(6)delete(Path f,boolean recursive)永久性删除文件或目录。
- hadoop中与文件读取相关的类FSDataInputStream、FileSystem 及其方法
- 利用 hadoop 的 FileSystem open 方法获取 FSDataInputStream 实现文件下载到本地 Hadoop 版本 2.7.0
- SequenceFile与MapFile &hdfs的主要API类--FileSystem FSDataInputStream
- 利用 hadoop 的 FileSystem copyFromLocalFile 方法实现文件上传HDFS中 Hadoop 版本 2.7.0
- 利用 hadoop 的 FileSystem copyFromLocalFile 方法实现文件上传HDFS中 Hadoop 版本 2.7.0
- Hadoop读取文件的方法,及其错误解决
- hadoop的FileSystem 文件系统实现上传下载文件
- hadoop的FileSystem 文件系统实现上传下载文件
- 利用Hadoop的FileSystem create方法获取 FSDataOutputStream 实现文件的上传
- 利用Hadoop的FileSystem create方法获取 FSDataOutputStream 实现文件的上传
- Android中读取中文字符的文件与文件读取相关
- hadoop FileSystem 重写 Progress 方法获取文件上传总进度
- 利用 Hadoop FileSystem moveToLocalFile 方法下载文件 实现HDFS操作
- FileSystem类的方法使用
- ServletContext中getRealPath()读取文件及其他三种读取文件的方式及其区别
- hadoop中的文件操作 FileSystem
- 读取文件内容 FileSystem function
- Hadoop FSDataInputStream 和FSDataOutputStream 用法
- Linux设备驱动子系统第一弹 - I2C
- Redhat关闭SELinux和防火墙的办法
- msys 中文乱码解决方案
- Win7使用xp中的超级终端
- JavaScript window.location对象
- hadoop中与文件读取相关的类FSDataInputStream、FileSystem 及其方法
- 排序算法----直接插入排序
- 代理理解(一)针对于系统中使用的控件
- 设备驱动外传 - 虚拟总线和platform device
- NoSQL——Redis在win7下安装配置的学习一
- 编程式事务管理—PlatformTransactionManager
- TRUNC函数的用法(转)
- i2c驱动调试经验
- ecshop 处理