Hadoop HDFS Basic JAVA API
- DistributedFileSystem:访问分布式环境中的HDFS文件
- LocalFileSystem: 访问本地系统中的HDFS文件
- FTPFileSystem: To access HDFS file FTP client
- WebHdfsFileSystem: 访问整个互联上的HDFS文件
hdfs://localhost:9000/user/joe/TestFile.txt
URI uri = URI.creat("hdfs://host:port/path")
<property>
<name>fs.default.name</name>
<value>hdfs://localhost:9000</value>
</property>
Path实例由URI实例构造,可以避免URI的OS依赖性,如Windows在路径中使用\\path 然而Linxu使用//。可以避免父子依赖性。
Path path=new Path (uri); //It constitute URI
Configuration conf = new Configuration();
conf.set("fs.default.name","hdfs://localhost:9000");
FileSystem
public static FileSystem get(Configuration conf);
public static FileSystem get(URI uri, Configuration conf);
public static FileSystem get(URI uri, Configuration conf, String user);
public static LocalFileSystem getLocal(Configuration conf);
FSDataInputStream类
URI uri = URI.create("hdfs://host:port/file Path");
Configuration conf = new Configuration();
FileSystem fs = FileSystem.get(rui, conf);
FSDataInputStream in = fs.open(new Path(uri));
以上方法得到的FSDataInputStream是默认缓冲空间4096byte。我们可以在创建输入流的时候指定缓冲空间大小,如下:
public abstract FSDataInputStream open(Path path, int sizeBuffer)
public interface Seekable{
void seek(long pos) throws IOException;
long getPos() throws IOException;
boolean seekToNewSource(long targetPos) throws IOException;
}
seek()方法搜寻给定的offset偏移量的文件位置,从而使read()方法可以从给定的文件位置开始读取。getPos()方法返回输入流当前的文件位置。一个小例子:
FileSystem fs = FileSystem.get(uri, conf);
FSDataInputStream in = fs.open(new Path(uri));
byte[] buffer = new byte[5];
in.seek(5); // sent to 5th position
in.read(buffer, 0, 5);//从输入流的第5个位置开始读取5个字节到buffer
System.out.println(new String(buffer));//打印从第5个位置开始的连续5个字节。(相对与输入流而言的!)
in.read(10, buffer, 0, 5);//从第10个位置开始读取5个字节到buffer
FSDataInputStream 也实现了PositionedReadable接口,从而提供了read和readFully方法来从seek的位置开始读取部分字节数据。如下:
read(long position, byte[] buffer, int offset, int length);
FSDataOutputStream
public FSDataOutputStream create(Path f) // 创建空文件
public FSDataOutputStream append(Path f)//在已存在文件后追加
Creat()方法还可以传递Progressable接口参数,用来追踪文件创建状态,如下:
public FSDataOutputStream create(Path f, Progressable progress);
FileStatus
URI uri = URI.create(strURI);
FileSystem fileSystem = FileSystem.get(uri, conf);
FileStatus fileStatus = fileSystem.getFileStatus(new Path(uri));
System.out.println("AccessTime:" + fileStatus.getAccessTime());
System.out.println("Len:"+fileStatus.getLen());
System.out.println("ModificationTime:"+fileStatus.getModificationTime());
System.out.println("Path:"+fileStatus.getPath());
如果uri是一个目录而不是文件,则listStatus()会返回一个FileStatus数组。如下:
public FileStatus[] listStatus(Path f)
Directories
public boolean mkdirs(Path f);
Delete file
public boolean delete(Path f, boolean recursive) throws IOException
Hadoop HDFS Basic JAVA API的更多相关文章
- Hadoop HDFS 用java API 进行读写
public class HdfsApp { public static FileSystem getFileSystem() throws Exception { Configuration con ...
- Hadoop之HDFS(三)HDFS的JAVA API操作
HDFS的JAVA API操作 HDFS 在生产应用中主要是客户端的开发,其核心步骤是从 HDFS 提供的 api中构造一个 HDFS 的访问客户端对象,然后通过该客户端对象操作(增删改查)HDFS ...
- Hadoop(五):HDFS的JAVA API基本操作
HDFS的JAVA API操作 HDFS在生产应用中主要是客户端的开发,其核心步骤是从HDFS提供的api中构造一个HDFS的访问客户端对象,然后通过该客户端对象操作(增删改查)HDFS上的文件. 主 ...
- HDFS中JAVA API的使用
HDFS中JAVA API的使用 HDFS是一个分布式文件系统,既然是文件系统,就可以对其文件进行操作,比如说新建文件.删除文件.读取文件内容等操作.下面记录一下使用JAVA API对HDFS中的 ...
- HDFS的Java API
HDFS Java API 可以用于任何Java程序与HDFS交互,该API使我们能够从其他Java程序中利用到存储在HDFS中的数据,也能够使用其他非Hadoop的计算框架处理该数据 为了以编程方式 ...
- 使用HDFS客户端java api读取hadoop集群上的信息
本文介绍使用hdfs java api的配置方法. 1.先解决依赖,pom <dependency> <groupId>org.apache.hadoop</groupI ...
- [转]HDFS中JAVA API的使用
HDFS是一个分布式文件系统,既然是文件系统,就可以对其文件进行操作,比如说新建文件.删除文件.读取文件内容等操作.下面记录一下使用JAVA API对HDFS中的文件进行操作的过程. 对分HDFS中的 ...
- Sample: Write And Read data from HDFS with java API
HDFS: hadoop distributed file system 它抽象了整个集群的存储资源,可以存放大文件. 文件采用分块存储复制的设计.块的默认大小是64M. 流式数据访问,一次写入(现支 ...
- 熟练掌握HDFS的Java API接口访问
HDFS设计的主要目的是对海量数据进行存储,也就是说在其上能够存储很大量文件(可以存储TB级的文件).HDFS将这些文件分割之后,存储在不同的DataNode上, HDFS 提供了两种访问接口:She ...
随机推荐
- 取得 APP 自己的版本号 (狠跨 4 个平台)
XE7 源码下载:[原创]取得APP自己的版本号(狠跨4个平台)XE7.zip XE6 源码下载:[原创]取得APP自己的版本号(狠跨4个平台)XE6.zip XE5 源码下载:[原创]取得APP自己 ...
- String和StringBuffer的区别
1.选自http://szh-java.iteye.com/blog/1666630 String 1,Stirng是对象不是基本数据类型 2,String是final类,不能被继承.是不可变对象,一 ...
- Python遍历文件夹
许多次需要用python来遍历目录下文件, 这一次就整理了记录在这里. 随实际工作,不定期更新. import os class FileTraversal: def __init__(self, r ...
- python函数和常用模块(三),Day5
递归 反射 os模块 sys模块 hashlib加密模块 正则表达式 反射 python中的反射功能是由以下四个内置函数提供:hasattr.getattr.setattr.delattr,改四个函数 ...
- R语言XML格式数据导入与处理
数据解析 XML是一种可扩展标记语言,它被设计用来传输和存储数据.XML是各种应用程序之间进行数据传输的最常用的工具.它与Access,Oracle和SQL Server等数据库不同,数据库提供了更强 ...
- knowing abstract,virtual,override,new
If a class has at least one member which modified by "abstract",this class is an abstract ...
- PHP极客水平测试——给创业公司用的远程面试题
出了份面试题<PHP极客水平测试>,创业公司可以用这个远程笔试啦,先答题,看答案合适了再邀请面试.希望对创业公司有所帮助,欢迎围观提建议哦^_^ 题目会持续更新. 答题地址:http:// ...
- 20款免费响应式的 HTML5 网站模板下载
今天这篇文章给大家带来的是20款免费响应式的 HTML5 网站模板,大家可以借助这些优秀的网站模板创建自己的优秀网站.响应式(Responsive Design)设计的目标是要让产品界面能够响应用户的 ...
- 【web前端面试题整理06】成都第一弹,邂逅聚美优品
前言 上周四回了成都,休息了一下下,工作问题还是需要解决的,于是今天去面试了一下,现在面试回来了,我感觉还是可以整理一下心得. 这个面试题整理系列是为了以后前端方面的兄弟面试时候可以得到一点点帮助,因 ...
- SharePoint Error - An unrecognized HTTP response was received when attempting to crawl this item
SharePoint 2013爬网报错 An unrecognized HTTP response was received when attempting to crawl this item. V ...