HDFS客户端操作(JAVA代码)
环境准备
windows需要配置hadoop的windows下的依赖
安装包地址:
链接:https://pan.baidu.com/s/1QtbH-x-S0QytkmaoSosdEw
提取码:2ktw
将安装包解压至自己所选择的目录,然后配置环境变量:
HADOOP_HOME : 解压的目录
PATH后新增:%HADOOP_HOME%\bin
maven所需依赖
新建Maven项目,添加以下依赖:
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-slf4j-impl</artifactId>
<version>2.12.0</version>
</dependency>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-client</artifactId>
<version>3.1.3</version>
</dependency>
实际操作
实际操作前先讲所需要的对象设为全局变量,方便今后操作:
private URI uri;
private Configuration configuration;
private String user;
private FileSystem fileSystem;
使用@Before注释的函数,可以在@Test注释下的函数运行前执行,可以进行对象的初始化:
@Before
public void init() throws IOException, InterruptedException {
uri = URI.create("hdfs://hadoop100:8020");
configuration = new Configuration();
user = "nevesettle";
fileSystem = FileSystem.get(uri,configuration,user);
}
@After则相反
@After
public void closeFs() throws IOException {
fileSystem.close();
}
文件上传
/**
* 上传文件
* @throws IOException
*/
@Test
public void uploadFile() throws IOException {
fileSystem.copyFromLocalFile(false,false,
new Path("D:\\Program files\\QQ\\QQ Data\\794133319\\FileRecv\\资源集合.txt"),
new Path("/"));
}
使用的函数为:
copyFromLocalFile(boolean delSrc, boolean overwrite,Path src, Path dst)
- delSrc:是否删除源文件
- overwrite:目标地址有相同文件是否覆盖
- src:源文件地址
- dst:目标文件地址
文件下载
/**
* 文件下载
* @throws IOException
* @throws InterruptedException
*/
@Test
public void downFile() throws IOException {
fileSystem.copyToLocalFile(false,
new Path("/资源集合.txt"),
new Path("d:\\"),
true);
}
使用的函数为:
copyToLocalFile(boolean delSrc, Path src, Path dst,boolean useRawLocalFileSystem)
- delSrc:是否删除源文件
- src:源文件地址
- dst:目标文件地址
- useRawLocalFileSystem:是否进行文件传输校验(CRC校验)
文件更名及移动位置
/**
* 文件名字修改
* @throws IOException
* @throws InterruptedException
*/
@Test
public void updateFile() throws IOException {
fileSystem.rename(new Path("/资源集合.txt"),
new Path("/资源.txt"));
}
使用的函数为:
rename(Path src, Path dst)
- src:源文件
- dst:目标文件
- 前后目录相同,文件名不同,则是修改文件名
- 前后目录不同,文件名相同,则是修改目录
- 前后目录和文件名都不同,则是移动位置并修改文件名
文件删除
/**
* 文件删除
* @throws IOException
* @throws InterruptedException
*/
@Test
public void deleteFile() throws IOException {
fileSystem.delete(new Path("/资源.txt"),false);
}
使用的函数为:
delete(Path f, boolean recursive)
- f:删除的文件或目录地址
- recursive:是否递归删除
- 当要删除的为文件是,递归删除为false
- 当要删除的是目录且为空时,递归删除为false
- 当要删除的是目录且不为空,则递归删除为true
IO流的文件上传
/**
* IO流的文件上传
* @throws IOException
* @throws InterruptedException
*/
@Test
public void uploadFileByIO() throws IOException {
//源文件地址
String srcFilePath = "D:\\资源集合.txt";
//目标文件地址
String destFilePath = "/资源集合.txt";
//输入流
FileInputStream fis = new FileInputStream(new File(srcFilePath));
//通过hdfs封装的方法获取输出流
FSDataOutputStream fos = fileSystem.create(new Path(destFilePath));
//最原始的方法
// int i = 0;
// while ( ( i = fis.read()) != -1 ){
// fot.write(i);
// }
//hdfs封装的方法
IOUtils.copyBytes(fis,fos,configuration);
//关闭IO流
IOUtils.closeStream(fis);
IOUtils.closeStream(fos);
}
- IOUtils 使用时注意要使用hadoop的包,不要使用错了
- configuration 为我们的全局变量,即配置
IO流的文件下载
/**
* IO流的文件下载
* @throws IOException
* @throws InterruptedException
*/
@Test
public void downFileByIO() throws IOException {
//源文件
String srcFilePath = "/资源集合.txt";
//目标文件
String destFilePath = "d:\\资源.txt";
//获得输入流
FSDataInputStream fis = fileSystem.open(new Path(srcFilePath));
//获得输出流
FileOutputStream fos = new FileOutputStream(new File(destFilePath));
//传输
IOUtils.copyBytes(fis,fos,configuration);
//关闭
IOUtils.closeStream(fis);
IOUtils.closeStream(fos);
}
HDFS客户端操作(JAVA代码)的更多相关文章
- Hadoop JAVA HDFS客户端操作
JAVA HDFS客户端操作 通过API操作HDFS org.apache.logging.log4jlog4j-core2.8.2org.apache.hadoophadoop-common${ha ...
- 大数据之路week07--day01(HDFS学习,Java代码操作HDFS,将HDFS文件内容存入到Mysql)
一.HDFS概述 数据量越来越多,在一个操作系统管辖的范围存不下了,那么就分配到更多的操作系统管理的磁盘中,但是不方便管理和维护,因此迫切需要一种系统来管理多台机器上的文件,这就是分布式文件管理系统 ...
- Hadoop之HDFS客户端操作
1. HDFS 客户端环境准备 1.1 windows 平台搭建 hadoop 2.8.5 2. 创建Maven工程 # pom.xml <dependencies> <depend ...
- 大数据学习——hdfs客户端操作
package cn.itcast.hdfs; import org.apache.commons.io.IOUtils; import org.apache.hadoop.conf.Configur ...
- 在linux安装redis单机和集群后,如何在windows上使用redis客户端或者java代码访问错误的原因很简单,就是没有连接上redis服务,由于redis采用的安全策略,默认会只准许本地访问。需要通过简单配置,完成允许外网访问。
这几天在学习在linux上搭建服务器的工作,可谓历经艰辛.可喜最后收获也不少. 这次是在linux上搭建redis服务器后从windows上缺无法访问,连接不上. 仔细回忆以前搭建nginx和ftp的 ...
- 完整全面的Java资源库(包括构建、操作、代码分析、编译器、数据库、社区等等)
构建 这里搜集了用来构建应用程序的工具. Apache Maven:Maven使用声明进行构建并进行依赖管理,偏向于使用约定而不是配置进行构建.Maven优于Apache Ant.后者采用了一种过程化 ...
- 在命令提示符窗口下(cmd)使用指令操作并编译java代码,运行java编译代码
使用cmd操作java代码,编译.java文件,运行.class文件. 操作步骤: 1:创建一个文件夹: 例如:在e盘根目录(\)下面创建一个名为Hello的文件夹: 使用md指令:如图 在e盘中会生 ...
- Hadoop系列007-HDFS客户端操作
title: Hadoop系列007-HDFS客户端操作 date: 2018-12-6 15:52:55 updated: 2018-12-6 15:52:55 categories: Hadoop ...
- HDFS的Java客户端操作代码(HDFS的查看、创建)
1.HDFS的put上传文件操作的java代码: package Hdfs; import java.io.FileInputStream; import java.io.FileNotFoundEx ...
随机推荐
- 炸了!一口气问了我18个JVM问题!
前言 GC 对于Java 来说重要性不言而喻,不论是平日里对 JVM 的调优还是面试中的无情轰炸. 这篇文章我会以一问一答的方式来展开有关 GC 的内容. 不过在此之前强烈建议先看这篇文章深度揭秘垃圾 ...
- putty连接Linux(NAT)
1.系统装好后第一次连的时候需要打开ssh服务 sudo apt-get install openssh-server 当在机器不能通过ping ip相通的话那么就要解决ip不同的问题,当ip相通还是 ...
- 一文看懂Java序列化之serialVersionUID
serialVersionUID适用于Java的序列化机制.简单来说,Java的序列化机制是通过判断类的serialVersionUID来验证版本一致性的.在进行反序列化时,JVM会把传来的字节流中的 ...
- PIP安装Django
1. 2. 3.升级PIP 4. 原来我已经用pycharm装过了,囧~
- thinkphp5.1与layui table表格使用
第1部分:layui 的 html代码, 即第2部分 thinkphp 控制器方法 index/Dataz/returnShowUser 的view页面 <!DOCTYPE html> & ...
- SMTPAuthenticationError: (535, '5.7.8 authentication failed')解决办法
代码: 运行之后一直报错,SMTPAuthenticationError: (535, '5.7.8 authentication failed'). 查找半天是因为新浪邮箱的STMP的服务没有开启, ...
- Java基础—Java方法的调用
Java方法的调用个主要有以下几种: 1.调用非静态方法 2.调用静态方法 3.方法与方法之间的调用 (1).静态方法内部调用其他方法 (2).非静态方法内部调用 1.调用非静态方法: 非静态方法的调 ...
- 被 C# 的 ThreadStatic 标记的静态变量,都存放在哪里了?
一:背景 1. 讲故事 前几天公号里有一位朋友留言说,你windbg玩的溜,能帮我分析下被 ThreadStatic 修饰的变量到底存放在哪里吗?能不能帮我挖出来,其实这个问题问的挺深的,玩高级语言的 ...
- div可以滚动但不显示滚动条
首先有3个div, 第1个,固定大小是200*200(单位为px,下同) 第2个,不固定大小,其大小要用第3个div把个撑开,但是这个div必需要有滚动条, 第3个,固定大小与第1个div保持一致20 ...
- 这个厉害了,ssm框架整合全过程,建议收藏起来好好看看
1.0 环境要求 IDEA MySQL 5.7.19 Tomcat 9 Maven 3.6 1.1 数据库 创建书籍数据库表,包括书籍编号,书籍名称,书籍数量以及书籍描述. CREATE DATABA ...