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大牛们的设 ...
随机推荐
- Windows Server 2012 忘记登录密码怎么办?
Windows Server 2012系统 忘记登录密码处理方法,此方法在其他 Server 系统应该是通用的(其他系统未做测试,请知悉) 电脑 Windows Server 2012系统 做好的U盘 ...
- AcWing 870. 约数个数
#include <iostream> #include <algorithm> #include <unordered_map> #include <vec ...
- python eval() 进行条件匹配
最近开发一个功能,根据条件表达式过滤数据,其中用到了eval(条件字符串,字典) 发现一个现象: >>> print u"campGrade in [ '\u51cf\u8 ...
- python+pygame制作一个可自定义的动态时钟和详解
1.效果图 2.完整代码 #第1步:导出模块 import sys, random, math, pygame from pygame.locals import * from datetime im ...
- django-cors-headers
django-cors-headers介绍 一个Django应用程序,向响应头中添加跨域资源共享(CORS)头.这允许从其他来源向Django应用程序发出浏览器内请求,当然也可以自定义中间件然后添加响 ...
- ARM64架构下面安装mysql5.7.22
MySQL下载地址为: https://obs.cn-north-4.myhuaweicloud.com/obs-mirror-ftp4/database/mysql-5.7.27-aarch64.t ...
- 深入delphi编程理解之消息(五)重写(override)dispatch、wndproc方法和Application.OnMessage事件
dispatch.wndproc是VCL framework在TWinCtronl定义的虚拟方法,下面程序通过重写(override)这两函数拦截WM_LBUTTONDOWN消息,来与Applicat ...
- Redis注册成服务
注册服务 redis-server.exe –-service-install redis.windows.conf 删除服务 redis-server –-service-uninstall 开启服 ...
- spring中web.xml指定配置文件
<context-param> <param-name>contextConfigLocation</param-name> <param-value> ...
- QM[中控群控云控]01. 中控原理
QM[中控群控云控]01. 中控原理 虽然自己对于中控有了解 也自己做过一些简单中控 不过看看紫猫老师的思路 应该有很多帮助和提高 中控核心:数据交流而已 脚本端和服务端之间的信息交换 ------个 ...