Java操作HDFS
FileSystem:
FSDataIntputStream
FSDataOutputStream
DtributedFileSystem
FileUtil
FileStatus
1. FileSystem
Private FileSystemfs;
Private String URL=“hdfs://192.168.170.128:8020”;
*建立连接 用junit单元测试 setup 和teardowm
1.setup()
fs=FileSystem.get(new URL(),newConfigurtion(),”主机名”);
*创建文件夹:fs.mkdir(new Path(“HDFS上面的路径”));
*创建文件并写入数据:
FSDataOutputStream os=fs.create(new Path(“文件路径”));
os.write(“数据”); //和文件流一样写入 记得os.close();
*浏览文件内容
FSDataIntputStream is=fs.open(new Path(“路径”));
byte b=new byte[128];
int len;
while((len=is.read(b)!=-1))
syso(new String(b,0,len));
*修改名字 换目录
fs.rename(new Path(“要改的”),new Path(“改后的“));
*删除目录 是否级联删除
fs.delete(new Path(“路径”),boolean)
*上传文件到HDFS
fs.copyFromLocalFile(new Path(“本地”),new Path”HDFS”))
*从HDFS下载
fs.copyToLocalFile(new Path(“本地”),new Path(“HDFS“))
*查看HDFS内存信息
FsStatus st=fs.getStatus(new Path(“路径”));
St.getUsed()/get Capacity()/getRemain()
2. FileStatus
*查看文件信息
FileStatus st=fs.getFileStatus(new Path(“路径”))
st.getAccessTime/getReplication/getLen/getOwner/getGroup/
getBlocksize等等
*输出hdfs中所有节点的IP和端口信息
DistributedFileSystem ds= (DistributedFileSystem)fs;
DataNodeInfo dis[]=ds.getDataNodeStat();
for(DataNodeInfo df:dis)
syso(df);
3.Fileutil
*小文件的合并
FileUtil.copyMerge(fs,new Path(“要合并”),fs,new Path(“合并后”))