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大牛们的设 ...
随机推荐
- 265. 粉刷房子 II
Q: A: 首先这题可以和粉刷房子这题一样解法,对于i号房子,遍历k种颜色,对于每一种,都去找i-1号房子除该颜色之外的最小花费.但上一题是3种颜色,总复杂度O(N),这题k种颜色,复杂度O(NK^2 ...
- 2019牛客暑期多校训练营(第三场) J LRU management 模拟链表操作
输入n, m,n表示n种操作,m表示最多可以容纳m个串. 第一种操作:先在容器里找是否存在这个串,如果不存在,则添加在末尾,这个串携带了一个值v. 如果存在,则先把之前存在的那个拿出来,然后在后面添加 ...
- 2019冬季PAT甲级第二题
#define HAVE_STRUCT_TIMESPEC #include<bits/stdc++.h> using namespace std; typedef struct{ int ...
- redis-server.exe redis.windows.conf 报错
在参考博文:https://blog.csdn.net/erlian1992/article/details/54382443#comments 学习redis的时候启动报错 C:\Users\Adm ...
- 201771010135 杨蓉庆《面对对象程序设计(java)》第十二周学习总结
1.实验目的与要求 (1) 掌握Java GUI中框架创建及属性设置中常用类的API: (2) 掌握Java GUI中2D图形绘制常用类的API: (3) 了解Java GUI中2D图形中字体与颜色的 ...
- ES-windows版本设置远程访问
1,官网下载 2,下载完解压 3,修改配置文件 elasticsearch.yml network.host: 0.0.0.0http.port: 9200transport.host: localh ...
- 抽象方法(abstract)
抽象方法:父类当中的方法,不确定如何进行 {} 方法体实现,那么这就是一个抽象方法 例如:动物类:叫{} // 叫方法就是抽象方法,不确定以何种声音叫 格式: 抽象方法:加上 abstract ...
- dfs关于按钮问题(flip游戏POJ1753)以及和bfs的区别+板子
DFS深度搜索:之前一直和bfs的用法搞不太清楚:写了题才能慢慢参透吧,看了别的博客的代码,感觉能更好理解dfs在图中的应用: 这个题目的意思是一个人去救另一个人,找出最短的寻找路径: #includ ...
- oracle sys可以登录,system权限不足,解决方法
今天在自己电脑上安装了oracle 11g,安装成功后发现 sys 可以正常登录.system 无法登录,显示 ORA-01031: insufficient privileges(权限不足) sel ...
- LaunchPad
链接:https://ac.nowcoder.com/acm/contest/3665/D来源:牛客网 Hery is a boy with strong practical abilities. N ...