FS Shell命令与JAVA实现操作HDFS文件
来源:互联网 发布:网游交易平台php源码 编辑:程序博客网 时间:2024/06/05 14:59
FS Shell命令
创建目录
shell>hadoop fs –mkdir /user
列表
shell>hadoop fs –ls /
查看文件内容
shell>hadoop fs –cat /input/file.txt
上传文件
shell>hadoop fs –put 本地文件 远程目录
获取文件
shell> hadoop fs –get 远程文件 本地目录
移动文件
shell>hadoop fs –mv远程文件1 … 远程文件n 远程目录
复制文件
shell>hadoop fs –cp 远程文件1 … 远程文件n 远程目录
删除文件
shell>hadoop fs –rmr 目录/文件
测试文件命令
文件是否存在
shell>hadoop fs –test –e 文件 // 存在返回0
文件是否0字节
shell>hadoop fs –test –z 文件 //是0返回0
文件是否为目录
shell>hadoop fs –test –d 文件 //是目录返回1,否则返回0
显示目录中所有文件大小
shell>hadoop fs –du 目录/文件 //目录统计总大小,文件统计大小
清空回收站
shell>hadoop fs -expunge
JAVA操作HDFS的API
hadoop文件系统API说明与编程步骤
Hadoop提供的文件系统的API
1、 Configuration 类(org.apache.hadoop.conf包):封装了一个客户端或服务器的配置文件
Configuration():
默认加载core-default.xml,该配置文件设置从本地文件读取。默认也会加载自定义的core-site.xml,设置配置文件从hdfs中读取,但是此文件需要放到 eclipse的 src目录,系统也会自动读取。最好也放log4j.properties
注:如果其它的配置文件如hdfs-site.xml,mapred-site.xml需要手动加载读取,记载方法是conf.addResource(“hdfs-site.xml”)格式。如果单独改变参数,conf.set(参数名,值)
2、 IOUtils类(org.apache.hadoop.io包):Hadoop提供的IO工具类
copyBytes(InputStream 输入流, OutputStream 输出流, int 缓存大小, boolean 是否关闭输入输出流):从输入流中读取数据到输出流,关闭输入输出流也可以使用IOUtils工具提供的closeStream(in)方法来关闭。
3、Path类(org.apache.hadoop.fs):一个文件被视为Path对象,该对象由文件的URI实例化。
Path(String uri):构建一个path对象
4、FileSystem类(org.apache.hadoop.fs包):代表一个文件系统,可以对文件进行操作。
static FileSystem get(Configuration conf):创建一个带有配置对象conf的FileSystem对象static FileSystem get(URI uri, Configuration conf):创建带有URI和Conf的FileSystem对象 注:如果在uri中指定hdfs的前缀,那么就不需要在eclipse中加载core-site.xml文件了。
例:
InputStream open(path path):打开一个文件作为输入字节流 void copyFromLocalFile(Path 本地文件,Path hdfs目录):从本地上传到hdfscopyToLocalFile(Path hdfs文件,Path hdfs文件)boolean delete(Path path,Boolean 是否递归删除):删除文件/目录,通常参数2为true
5、java.net.URI
create(String prefix):创建一个带有prefix前缀的uri对象
使用FileSystem API编程步骤
使用hadoop提供的文件系统API操作数据(读增删改名复制和文件详细信息)
阅读全文