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大牛们的设 ...
随机推荐
- pandas 数据可视化之折线图
官网地址:https://openpyxl.readthedocs.io/en/stable/charts/line.html#id1 openpyxl+pandas # coding=utf-8 i ...
- Flask 教程 第十六章:全文搜索
本文翻译自The Flask Mega-Tutorial Part XVI: Full-Text Search 这是Flask Mega-Tutorial系列的第十六部分,我将在其中为Microblo ...
- 【二叉搜索树】的详细实现(C++)
二叉搜索树的概念 从前面讨论折半搜索的性能中可知,如果每次从搜索序列的中间进行搜索,把区间缩小一半,通过有限次迭代,很快就能通近到所要寻找的元素.进一步,如果我们直接输入搜索序列,构造出类似于折半搜索 ...
- 线性筛-prime,强大O(n)
和朴素的素数筛法一样,flag数组,记录x是否为素数 flag[x]=0,x为合数 falg[x]=1,x为素数 flag[1],无定义 其核心思想是,用x筛除与之差异最小的y,达到时间上O(n)的目 ...
- 040_字符串连接符 041_条件运算符目 042_运算符优先级_逻辑与或优先问题 043_自动类型转化 044_强制类型转换 045_基本类型常见错误_溢出_L问题
040_字符串连接符 package test_package; /** * 字符串运算符 * @author * */public class TestOperator05 { public sta ...
- Go函数高级
1. 函数的数据类型 package main import "fmt" func main() { /* go语言的数据类型: 基本数据类型: int,float,bool,st ...
- 字符串类型:char,varchar,text,enum,set
字符串类型 1.char 格式:char (M) 2.varchar 格式:varchar (M) [注意]M表示允许的字符串长度[65535].M表示的是字符数,而不是字节数.但是最大长度的使用是按 ...
- Java 前加加和后加加 总结
public class Test { public static void main(String[] args) { int age = 6; //先自加,再使用(age先自加1,然后再打印age ...
- 04hive查询
详细文档查看:https://cwiki.apache.org/confluence/display/Hive/LanguageManual+Select 一. 基本查询(SELECT …FROM) ...
- 设置textarea不可拉伸
默认情况下,我们将鼠标移动到textarea的右下角时发现文本域是可以通过拖动的方式改变其大小的,这会影响我们原本的页面布局.若想设置其不可拖动,可为其添加如下属性: style="resi ...