HDFS核心类FileSystem的使用
一、导入jar包
本次使用的是eclipse操作的,所以需要手动导入jar包
在Hadoop.7.7/share/hadoop里有几个文件夹

common为核心类,此次需要引入common和hdfs两个文件夹下的所有jar包(包括作者写的三个jar包以及lib里面的所有jar包)

连接HDFS的服务
//连接hdfs的服务
@Test
public void connect()
{
Configuration conf=new Configuration();
conf.set("fs.defaultFS", "hdfs://192.168.0.32:9000");
try {
FileSystem fileSystem = FileSystem.get(conf);
FileStatus fileStatus = fileSystem.getFileStatus(new Path("/UPLOAD"));
System.out.println(fileStatus.isFile()); //是不是一个文件
System.out.println(fileStatus.isDirectory()); //是不是一个目录
System.out.println(fileStatus.getPath()); //文件的路径
System.out.println(fileStatus.getLen()); //文件大小
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} }
重命名
在操作重命名是出现错误,是权限不够

执行hadoop fs -chmod 777 / 给予所有操作权限再运行就可以了
//重命名
@Test
public void mv()
{
Configuration conf=new Configuration();
try {
FileSystem fileSystem = FileSystem.get(new URI("hdfs://192.168.0.32:9000"), conf); //连接
boolean rename = fileSystem.rename(new Path("/UPLOAD/jdk-8u221-linux-x64.tar.gz"),new Path("/UPLOAD/jdk1.8.tar.gz"));
System.out.println(rename?"修改成功":"修改失败");
fileSystem.close(); //关闭
} catch (IOException | URISyntaxException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
创建文件夹
//创建文件夹
@Test
public void mkdir()
{
Configuration conf=new Configuration();
try {
FileSystem fileSystem = FileSystem.get(new URI("hdfs://192.168.0.32:9000"),conf); //连接
fileSystem.mkdirs(new Path("/test"));
fileSystem.mkdirs(new Path("/other/hello/world"));
fileSystem.close(); //关闭
} catch (IOException | URISyntaxException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
文件上传
//文件上传
@Test
public void upload()
{
Configuration conf=new Configuration();
try {
FileSystem fileSystem = FileSystem.get(new URI("hdfs://192.168.0.32:9000"),conf);
FSDataOutputStream out = fileSystem.create(new Path("/hadoop.jar"));
FileInputStream in=new FileInputStream(new File("D:\\hadoop.jar"));
byte[]b=new byte[];
int len=;
while((len=in.read(b))!=-)
{
out.write(b,,len);
in.close();
out.close();
}
} catch (IOException | URISyntaxException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
文件下载
//文件下载
@Test
public void download()
{
Configuration conf=new Configuration();
try {
FileSystem fileSystem = FileSystem.get(new URI("hdfs://192.168.0.32:9000"),conf);
FSDataInputStream in = fileSystem.open(new Path("/hadoop.jar"));
FileOutputStream out=new FileOutputStream(new File("D://soft//hadoop.jar"));
byte[]b=new byte[];
int len=;
while((len=in.read(b))!=-)
{
out.write(b,,len);
}
in.close();
out.close();
} catch (IOException | URISyntaxException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} }
遍历文件系统
@Test //遍历文件系统
public void lsr() {
Configuration conf = new Configuration();
try {
FileSystem fileSystem = FileSystem.get(new URI("hdfs://192.168.0.32:9000"),conf);
FileStatus[] status = fileSystem.listStatus(new Path("/"));
for(FileStatus f:status) {
judge(fileSystem,f);
}
fileSystem.close();
} catch (IOException | URISyntaxException e) {
e.printStackTrace();
}
} public void judge(FileSystem fileSystem,FileStatus s) {
String name = s.getPath().toString().split("hdfs://192.168.0.32:9000/")[];
if(s.isDirectory()) {
System.out.println("文件夹: "+name);
try {
FileStatus[] status= fileSystem.listStatus(new Path("/"+name));
for(FileStatus f:status) {
judge(fileSystem,f);
}
} catch (IllegalArgumentException | IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}else {
System.out.println("文件: "+name);
}
}
HDFS核心类FileSystem的使用的更多相关文章
- hadoop之HDFS核心类Filesystem的使用
1.导入jar包,要使用hadoop的HDFS就要导入hadoop-2.7.7\share\hadoop\common下的3个jar包和lib下的依赖包.hadoop-2.7.7\share\hado ...
- Java代码操作HDFS测试类
1.Java代码操作HDFS需要用到Jar包和Java类 Jar包: hadoop-common-2.6.0.jar和hadoop-hdfs-2.6.0.jar Java类: java.net.URL ...
- HDFS 工具类
读取HDFS上文件数据 import java.io.File; import java.io.FileInputStream; import java.io.IOException; import ...
- cesium核心类Viewer简介
1.简单描述Viewer Viewer类是cesium的核心类,是地图可视化展示的主窗口,cesium程序应用的切入口,扮演必不可少的核心角色. 官网的英文解析如下: A base widget fo ...
- HDFS 核心原理
HDFS 核心原理 2016-01-11 杜亦舒 HDFS(Hadoop Distribute File System)是一个分布式文件系统文件系统是操作系统提供的磁盘空间管理服务,只需要我们指定把文 ...
- Webwork 学习之路【03】核心类 ServletDispatcher 的初始化
1. Webwork 与 Xwork 搭建环境需要的的jar 为:webwork-core-1.0.jar,xwork-1.0.jar,搭建webwork 需要xwork 的jar呢?原因是这样的,W ...
- Hibernate核心类用法-使用Transaction管理事务
一个典型的事务应该使用下面的形式 在创建完Session对象后即使用beginTransaction()启动事务 从此开始直到commit()之间的代码 都会处于同一个事务中 这两个函数之间所有的数据 ...
- 理解Lucene索引与搜索过程中的核心类
理解索引过程中的核心类 执行简单索引的时候需要用的类有: IndexWriter.Directory.Analyzer.Document.Field 1.IndexWriter IndexWr ...
- android的消息处理有三个核心类:Looper,Handler和Message。
android的消息处理机制(图+源码分析)——Looper,Handler,Message 作为 一名android程序员,我学习android的一大乐趣是可以通过源码学习google大牛们的设 ...
随机推荐
- linux nmon安装
系统版本红帽7.7: [root@hostuser1 nmon_permon]# cat /etc/redhat-release CentOS Linux release 7.7.1908 (Core ...
- js实现图片无缝轮播
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- pyppeteer硬钢掉淘宝登入的滑块验证
完整代码我也不好公布,我可以给你们思路,以及部分代码动动脑子看看文档应该也能搞定 一.初始化Chromium浏览器相关属性 browser = await pyppeteer.launch({'hea ...
- AcWing 837. 连通块中点的数量
#include <iostream> using namespace std; ; int n, m; int p[N], size[N]; int find(int x) { if ( ...
- 偏移分页器、游标分页器、Django-filter插件
复习 """ 1.drf-jwt签发与校验源码 签发token的请求 - 登录请求 - ObtainJSONWebToken - post - 将账号密码丢给序列化类处理 ...
- Go_type
1. type的定义和使用 Go语言支持函数式编程,可以使用高阶编程语法.一个函数可以作为另一个函数的参数,也可以作为另一个函数的返回值,那么在定义这个高阶函数的时候,如果函数的类型比较复杂,我们可以 ...
- 每天进步一点点------Altium Designer PCB设计规则中英对照
Electrical(电气规则) Clearance:安全间距规则 Short Circuit:短路规则 UnRouted Net:未布线网络规则 UnConnected Pin:未连线引脚规则 Ro ...
- 【Vue路由系统详述】
目录 路由命名 路由参数 路由参数的实现原理 子路由 子路由之append 动态绑定属性 子路由之append升级版 子路由之非append 路由重定向 手动路由 路由钩子 在路径中去掉"# ...
- 洛谷 P1494 [国家集训队]小Z的袜子(莫队)
题目链接:https://www.luogu.com.cn/problem/P1494 一道很经典的莫队模板题,然而每道莫队题的大体轮廓都差不多. 首先莫队是一种基于分块的算法,它的显著特点就是: 能 ...
- js + jquery 实现分页区翻页
简单来说,情况是这样的,假如做好了对动漫每一集进行分页,如下图: 但当分页太多就会变得不能看,而且前后箭头也不能只是摆设. 想要得到类似这样效果: 网上搜了一会翻页相关的库没什么效果,也不太合适自己的 ...