Hadoop----HDFS的API操作

HDFS文件上传

1、源代码`

@Test
public void testCopyFromLocalFile() throws IOException,InterruptedException,URISyntaxException{
	//1、获取文件系统
	Configuration configuration = new Configuration();
	configuration.set("dfs.replication","2");//副本数
	FileSystem fs = FileSystem.get(new URI("hdfs://hadoop101:9000"),configuration,"root");//写自己的hadoop机器和用户名
	//2、上传文件
	fs.copyFromLocalFile(new Path("d:/test.txt"),new Path("/test.txt")); //本地路径和hdfs路径
	//3、关闭
	fs.close();
	
	System.out.println("上传结束");
}

2、将hdfs-site.xml拷贝到项目的根目录下

HDFS文件下载

@Test
public void testCopyToLocalFile() throws IOException,InterruptedException,URISyntaxException{
	//1、获取文件系统
	Configuration configuration = new Configuration();
	FileSystem fs = FileSystem.get(new URI("hdfs://hadoop101:9000"),configuration,"root");//写自己的hadoop机器和用户名
	//2、下载文件
	fs.copyToLocalFile(false,new Path("/test.txt"),new Path("d:/test.txt"),true); 
	//3、关闭
	fs.close();
	
	System.out.println("下载结束");
}

HDFS文件夹删除

@Test
public void testDelete() throws IOException,InterruptedException,URISyntaxException{
	//1、获取文件系统
	Configuration configuration = new Configuration();
	FileSystem fs = FileSystem.get(new URI("hdfs://hadoop101:9000"),configuration,"root");/
	//2、删除文件
	fs.delete(new Path("/honglou.txt"),true);
	//3、关闭
	fs.close();
	
	System.out.println("删除结束");
}

HDFS文件名更改

@Test
public void rename() throws IOException,InterruptedException,URISyntaxException{
	//1、获取文件系统
	Configuration configuration = new Configuration();
	FileSystem fs = FileSystem.get(new URI("hdfs://hadoop101:9000"),configuration,"root");//写自己的hadoop机器和用户名
	//2、修改文件名
	fs.rename(new Path("/1.txt"),new Path("/2.txt"));
	//3、关闭
	fs.close();
}

HDFS文件详情查看

@Test
public void testListFiles() throws IOException,InterruptedException,URISyntaxException{
	//1、获取文件系统
	Configuration configuration = new Configuration();
	FileSystem fs = FileSystem.get(new URI("hdfs://hadoop101:9000"),configuration,"root");
	//2、文件详情
	RemoteIterator<LocatedFileStatus> listFiles = fs.listFiles(new Path("/"),true);

	while(listFiles.hasNext()){
	LocatedFileStatus status = listFiles.next();

	//输出详情
	//文件名称
	System.out.println(status.getPath().getName());
	//长度
	System.out.println(status.getLen());
	//权限
	System.out.println(status.getPermission());
	//分组
	System.out,println(status.getGroup());
	
	//获取存储的块信息(注意:文件夹没有block)
	BlockLocation[] blockLocations = status.getBlockLocation();
	for(BlockLocation blockLocation:blockLocations){
		//获取块存储的主机节点
		String[] hosts = blockLocation.getHosts();
		for(String host :hosts){
		System.out.println(host);
		}
	}
	System.out.println("====分割线====");
	}
	//3、关闭
	fs.close();
}

HDFS文件和文件夹判断

@Test
public void testListStatus() throws IOException,InterruptedException,URISyntaxException{
	//1、获取文件系统
	Configuration configuration = new Configuration();
	FileSystem fs = FileSystem.get(new URI("hdfs://hadoop101:9000"),configuration,"root");
	//2、判断是文件还是文件夹
	FileStatus[] fileStatus = fs.listStatus(new Path("/"));
	
	for(FileStatus fileStatus : listStatus){
		//如果是文件
		if(fileStatus.isFile()){
			System.out.println("f:"+fileStatus.getPath().getName());
		}else{
		System.out.println("d:"+fileStatus.getPath().getName());
		}
	}
	//3、关闭
	fs.close();
}

热门文章

暂无图片
编程学习 ·

ubuntu软件安装

ubuntu软件安装apt和apt-getdpkg源码安装 apt和apt-get 在ubuntu安装软件时常用命令apt-get install xxx命令来安装。从字面上理解install即是安装的意思,get即获取的意思,apt此处理解为工具名称,全称 Advanced Packaging Tool(APT)字义是先进的包装工具,但在linux系统中…
暂无图片
编程学习 ·

用Python读取pg数据库,准确统计每一张表的数据量,输出中英文表名和数据量

1 前言 在我们工作中,有时候老板关系我们手上到底有多少数据,每一张表中到底有多少数据量,整个库又有多少数据量?要给他一个准确的数据,给出一张详细清单。 在网上遇到的一种做法是使用navicat写SQL语句统计pg_class里面的reltuples这个列数据,但是发现这个数据有很大偏…
暂无图片
编程学习 ·

JavaScript-Promise的使用及详细解释

JavaScript-Promise的使用及详细解释案例使用多种方法实现以下案例第一种---setTimeout嵌套第二种---封装函数Promise详解小案例第三种---使用Promise来实现最开始的案例Promise---具体使用的案例第一版---点击按钮显示图片第二版---加载出第一张之后在加载其他,依次加载第三版…
暂无图片
编程学习 ·

Day 11 武装飞船

《外星人入侵》游戏要实现的是:玩家控制一艘出现在屏幕底部中央的飞船,可以使用箭头左右移动飞船,还可以使用空格来进行射击,游戏开始时候一群外星人出现在天空,他们在屏幕中向下移动,玩家的任务是射杀这些外星人,玩家将所有外星人都消灭干净后,会出现一群新的外星人,…
暂无图片
编程学习 ·

2 css

css的三大特性 css有三个非常重要的三个特性;层叠性 继承性 优先级 层叠性 相同选择器给设置相同的样式,此时一个样式就会覆盖(层叠)另一个冲突的样式,层叠性 主要解决样式冲突的问题 原则 样式冲突,遵循原则上就近原则,那个样式离结构近,就执行那个样式 样式不冲突,不…
暂无图片
编程学习 ·

服务器使用Nginx部署Springboot项目(jar包)

部署SpringBoot项目到后台Nginx实现多项目反向代理1,将java项目打成jar包2.准备工具3.将jar包传入服务器3.使用Xshell运行jar包4.下载安装nginx5.配置nginx.conf6通过域名访问(成功) 1,将java项目打成jar包 这里我用到的是maven工具这里有两个项目,打包完成后一个为demo.jar,另…
暂无图片
编程学习 ·

Android开发第三方库的使用和集成

一、第三方SDK开发App开发APP开发是指的具体某个具体的项目,更倾向于用户体验、功能更偏于特定业务、讲究的是快速迭代、快速占领市场,通常会涉及到多个模块或者多个业务场景。SDK开发SDK 是为APP服务的,提供的大多是公共基础服务,如网络请求、打点统计、帐号服务等,在App…
暂无图片
编程学习 ·

centos下安装nginx

1,环境介绍 本文安装nginx版本为1.12.2 系统版本为centos6.9 2,软件下载 链接:https://pan.baidu.com/s/1RVhCS1-WcXXaGlnAVQPH-g 提取码:od5x 3,安装nginx 1,编译安装需要安装一些兼容包 yum install pcre-devel openssl-devel gcc-c++ htop iotop iftop nmap nc telnet…
暂无图片
编程学习 ·

用自行实现的优先队列进行四字成语汉字频率统计

文章目录背景构建最大堆代码实现测试通过最大堆实现优先队列成语汉字频率统计案例统计四字成语文件中的汉字出现频率的前5位项目结构汉字频率的类优先队列测试类成语汉字统计主程序 背景 在《自已做动画及编写程序搞清楚最大堆的实现原理》这篇文章中,我们通过动图分析编 码自…
暂无图片
编程学习 ·

awk详解(三)

ack action常用的action分类 (1)Expressions:算术,比较表达式 (2)Control statements:if,while等 (3)Compound statement:组合语句 (4)input statements (5)output statements:print等awk控制语句{statements;...}组合语句 if(condition){statements;...} if(c…
暂无图片
编程学习 ·

select 进阶查询,不会你就 OUT 了

1.1 分组查询 1.1.1 语法 # where 和 having 可以省略 SELECT col_name, group_function, FROM tb_name [WHERE where_condition] GROUP BY group_expression [HAVING group_condition];☞ 说明col_name:列明 tb_name:表名 where_condition:where 后的过滤条件 group_func…
暂无图片
编程学习 ·

软件测试的基本流程

软件测试的基本流程 1. 测试需求分析阶段阅读需求 理解需求 主要就是对业务的学习 分析需求点 参与需求评审会议2. 测试计划阶段主要任务就是编写测试计划 参考软件需求规格说明书 项目总体计划,内容包括测试范围(来自需求文档),进度安排,人力物力的分配,整体测试策略的制…
暂无图片
编程学习 ·

GitHub更新fork的代码

1、在本地装好github客户端,或者git客户端 2、clone 自己的fork分支到本地,可以直接使用github客户端,clone到本地,如果使用命令行,命令为:git clone https://github.com/liuyanqing1023/WxJava.git3、增加源分支地址到你项目远程分支列表中(此处是关键),先得将原来的仓…
暂无图片
编程学习 ·

Spring MVC的运行原理(简答)

a)(浏览器)用户发送请求 b)前端控制器(dispatcherServlet)接收(他会委托其他模块进行真正的业务和数据处理 ) c)向handlermapping发送url查找相应的方法(handlermapping中储存的是url 和方法的键值对) d)返回处理器(“地址”)。 e)前端控制器发送处理器“地址”给处理…
暂无图片
编程学习 ·

java面试-JVM内存区域划分

JVM内存划分说到Java内存区域,刚开始接触java的人会下意识说出“堆栈”。这里要明确堆栈不是一个概念,而是两个概念,堆和栈是两块不同的内存区域,简单理解的话,堆是用来存放对象而栈是用来执行程序的。其次,堆内存和栈内存的这种划分方式比较粗糙,这种划分方式只能说明大…
暂无图片
编程学习 ·

比较数组,vector对象和array对象

要了解数组,vector对象及array对象的相似与不同之处,结合以下示例分析: #include <iostream> #include <vector> #include <array>int main() {using namespace std;double a1[4] = {1.2,2.4,3.6,4.8};vector<double> a2(4);a2[0] = 1.0/3.0;a2[1] …
暂无图片
编程学习 ·

Zookeeper 总结与面试题汇总

1.zookeeper的用处 从工作机制上来说,Zk = 文件系统 + 通知机制 想个哨兵一样,它负责存储和管理大家都关心的数据,然后接收观察者的注册,一旦这些数据的状态发生变化,Zk 就通知已经在Zookeeper 已经注册的观察者做出相应的反应。 2.zookeeper的数据结构(树)? 讲一下基于…
暂无图片
编程学习 ·

Oracle数据库编程中求最近200天的每周一

select distinct trunc(trunc(sysdate)-level,IW) my_datefrom dualwhere trunc() >=trunc(sysdate)-200connect by level<=200区间分割判断某个数在前十、中十、后十trunc((x-1)/10)*10+1 and trunc((x-1)/10)*10+1 0
暂无图片
编程学习 ·

Go 结构体使用注意事项和细节

结构体使用注意事项和细节结构体的所有字段在内存中是连续的//结构体 type Point struct {x inty int }//结构体 type Rect struct {leftUp, rightDown Point }func main() {r1 := Rect{Point{1,2}, Point{3,4}}//r1有四个int, 在内存中是连续分布//打印地址fmt.Printf("…