HDFS的API操作
准备工作:IDEA > HDFS客户端准备
目录
文件上传
文件下载
文件夹删除
修改文件名称
查看文件详情
文件和文件夹的判断
完整代码
文件上传
注意conf.set("dfs.replication","2");的位置,位置不一样,设置的副本数不一样
HDFS参数优先级说明(由高到低):代码中 > resources中的hdfs-site.xml > 集群中的设置cat /opt/module/hadoop-2.7.2/etc/hadoop/hdfs-site.xml > 默认设置
在hdfs-site.xml中添加:
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration><property><name>dfs.replication</name><value>1</value></property>
</configuration>
//文件上传
@Test
public void testCopyFromLocalFile() throws IOException, URISyntaxException, InterruptedException {//1. 获取fs对象Configuration conf = new Configuration();conf.set("dfs.replication","2");FileSystem fs = FileSystem.get(new URI("hdfs://192.168.223.101:9000"),conf,"zzz");
//conf.set("dfs.replication","2");//2.执行上传APIfs.copyFromLocalFile(new Path("e:/copyFromLocalFile.txt"),new Path("/copyFromLocalFile_code.txt"));//3.关闭资源fs.close();
}
文件下载
查看copyToLocalFile源码
delSrc是否删除源数据
useRawLocalFileSystem(使用本地文件系统)默认值是False,在文件下载的时候会有crc校验
设置为true时,就没有crc
crc是一种安全校验,校验数据的可靠性,数据是否被改变了
@Test
//2. 文件下载
public void testCopyToLocalFile() throws URISyntaxException, IOException, InterruptedException {//1. 获取对象Configuration conf = new Configuration();FileSystem fs = FileSystem.get(new URI("hdfs://192.168.223.101:9000"),conf,"zzz");//2. 执行下载操作
// fs.copyToLocalFile(new Path("/user/zzz/input/wc.input"),new Path("e:/input.txt"));fs.copyToLocalFile(false,new Path("/user/zzz/input/wc.input"),new Path("e:/input1.txt"),true);//3.关闭资源fs.close();}
文件夹删除
fs.delete(new Path("/0529"),true);
两个参数最好同时在
也可以只有一个Path,但是不建议这么使用
@Test
//3. 文件删除
public void testDelete() throws URISyntaxException, IOException, InterruptedException {//1. 获取对象Configuration conf = new Configuration();FileSystem fs = FileSystem.get(new URI("hdfs://192.168.223.101:9000"),conf,"zzz");//2. 执行删除操作//@Deprecated//不建议这么使用,但是可以使用
// fs.delete(new Path("/0529"));fs.delete(new Path("/0529"),true);//3. 关闭资源fs.close();
}
修改文件名称
// 4. 文件更名
@Test
public void testRename() throws URISyntaxException, IOException, InterruptedException {//1. 获取对象Configuration conf = new Configuration();FileSystem fs = FileSystem.get(new URI("hdfs://192.168.223.101:9000"),conf,"zzz");//2. 执行更名操作fs.rename(new Path("/panjinlian.txt"),new Path("/pjl.txt"));//3. 关闭资源fs.close();
}
查看文件详情
//5. 文件详情查看
@Test
public void testListFile() throws URISyntaxException, IOException, InterruptedException {//1. 获取对象Configuration conf = new Configuration();FileSystem fs = FileSystem.get(new URI("hdfs://192.168.223.101:9000"),conf,"zzz");//2. 查看文件详情RemoteIterator<LocatedFileStatus> listFile = fs.listFiles(new Path("/"), true);while(listFile.hasNext()){LocatedFileStatus fileStatus = listFile.next();//查看文件名称、权限、长度、块信息System.out.println(fileStatus.getPath().getName());//文件名称System.out.println(fileStatus.getPermission());//文件权限System.out.println(fileStatus.getLen());//文件长度BlockLocation[] blockLocations = fileStatus.getBlockLocations();for(BlockLocation blockLocation: blockLocations){String[] hosts = blockLocation.getHosts();//副本具体存在于哪个主机上for(String host:hosts){System.out.println(host);}}System.out.println("---------------分割线---------------------");}//3. 关闭资源fs.close();
}
文件和文件夹的判断
//文件和文件夹判断
@Test
public void testLineStatus() throws URISyntaxException, IOException, InterruptedException {//1. 获取对象Configuration conf = new Configuration();FileSystem fs = FileSystem.get(new URI("hdfs://192.168.223.101:9000"), conf, "zzz");//2. 具体判断操作FileStatus[] listStatus = 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();
}
完整代码
import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;import org.apache.hadoop.fs.*;
import org.apache.hadoop.conf.Configuration;
import org.junit.Test;public class HDFSClient {public static void main(String[] args) throws IOException, URISyntaxException, InterruptedException {Configuration conf = new Configuration();//conf.set("fs.defaultFS","hdfs://hadoop131:9000");// 1 获取hdfs客户端对象FileSystem fs = FileSystem.get(new URI("hdfs://192.168.223.101:9000"),conf,"zzz");// 2 在hdfs上创建路径fs.mkdirs(new Path("/test/zzz"));// 3 关闭fs.close();System.out.println("over");}//文件上传@Testpublic void testCopyFromLocalFile() throws IOException, URISyntaxException, InterruptedException {//1. 获取fs对象Configuration conf = new Configuration();conf.set("dfs.replication","2");FileSystem fs = FileSystem.get(new URI("hdfs://192.168.223.101:9000"),conf,"zzz");//2.执行上传APIfs.copyFromLocalFile(new Path("e:/copyFromLocalFile.txt"),new Path("/copyFromLocalFile_code.txt"));//3.关闭资源fs.close();}@Test//2. 文件下载public void testCopyToLocalFile() throws URISyntaxException, IOException, InterruptedException {//1. 获取对象Configuration conf = new Configuration();FileSystem fs = FileSystem.get(new URI("hdfs://192.168.223.101:9000"),conf,"zzz");//2. 执行下载操作// fs.copyToLocalFile(new Path("/user/zzz/input/wc.input"),new Path("e:/input.txt"));fs.copyToLocalFile(false,new Path("/user/zzz/input/wc.input"),new Path("e:/input1.txt"),true);//3.关闭资源fs.close();}@Test//3. 文件删除public void testDelete() throws URISyntaxException, IOException, InterruptedException {//1. 获取对象Configuration conf = new Configuration();FileSystem fs = FileSystem.get(new URI("hdfs://192.168.223.101:9000"),conf,"zzz");//2. 执行删除操作//@Deprecated//不建议这么使用,但是可以使用// fs.delete(new Path("/0529"));fs.delete(new Path("/0529"),true);//3. 关闭资源fs.close();}// 4. 文件更名@Testpublic void testRename() throws URISyntaxException, IOException, InterruptedException {//1. 获取对象Configuration conf = new Configuration();FileSystem fs = FileSystem.get(new URI("hdfs://192.168.223.101:9000"),conf,"zzz");//2. 执行更名操作fs.rename(new Path("/panjinlian.txt"),new Path("/pjl.txt"));//3. 关闭资源fs.close();}//5. 文件详情查看@Testpublic void testListFile() throws URISyntaxException, IOException, InterruptedException {//1. 获取对象Configuration conf = new Configuration();FileSystem fs = FileSystem.get(new URI("hdfs://192.168.223.101:9000"),conf,"zzz");//2. 查看文件详情RemoteIterator<LocatedFileStatus> listFile = fs.listFiles(new Path("/"), true);while(listFile.hasNext()){LocatedFileStatus fileStatus = listFile.next();//查看文件名称、权限、长度、块信息System.out.println(fileStatus.getPath().getName());//文件名称System.out.println(fileStatus.getPermission());//文件权限System.out.println(fileStatus.getLen());//文件长度BlockLocation[] blockLocations = fileStatus.getBlockLocations();for(BlockLocation blockLocation: blockLocations){String[] hosts = blockLocation.getHosts();//副本具体存在于哪个主机上for(String host:hosts){System.out.println(host);}}System.out.println("---------------分割线---------------------");}//3. 关闭资源fs.close();}//文件和文件夹判断@Testpublic void testLineStatus() throws URISyntaxException, IOException, InterruptedException {//1. 获取对象Configuration conf = new Configuration();FileSystem fs = FileSystem.get(new URI("hdfs://192.168.223.101:9000"), conf, "zzz");//2. 具体判断操作FileStatus[] listStatus = 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();}
}
HDFS的API操作相关推荐
- 2021年大数据Hadoop(十二):HDFS的API操作
2021大数据领域优质创作博客,带你从入门到精通,该博客每天更新,逐渐完善大数据各个知识体系的文章,帮助大家更高效学习. 有对大数据感兴趣的可以关注微信公众号:三帮大数据 目录 HDFS的API操作 ...
- HDFS的API操作-获取FileSystem方式
HDFS 的 API 操作 导入 Maven 依赖 <repositories><repository><id>cloudera</id><url ...
- HDFS Java API 操作
文章目录 HDFS Java API操作 零.启动hadoop 一.HDFS常见类接口与方法 1.hdfs 常见类与接口 2.FileSystem 的常用方法 二.Java 创建Hadoop项目 1. ...
- 实验二 HDFS的Shell命令操作,和HDFS的API操作
文章目录 实验目的 一. 实验原理 二.实验准备 实验内容 步骤 项目1 HDFS常见命令练习 列出HDFS当前用户家目录下的文件及文件夹: 列出HDFS文件下名为directory的文件夹中的文件: ...
- 分布式文件系统—HDFS—Java API操作
原文作者:jiangw-Tony 原文地址:HDFS基础使用 hdfs 在生产应用中主要是客户端的开发,其核心步骤是从 hdfs 提供的 api 中构造一个 HDFS的访问客户端对象,然后通过该客户端 ...
- 大数据之-Hadoop之HDFS的API操作_文件上传---大数据之hadoop工作笔记0056
然后我们HDFS的java的api操作. 比如我们有个需求从mysql中把数据上传到完全分布式的集群中的,hdfs中 比如这里首先我们演示,把e盘下的banzhang.txt文件上传到完全分布式集群h ...
- HDFS java API操作
HDFS的javaAPI操作 目标:掌握如何使用API对HDFS上的目录和数据进行增.删.改.查操作. 1.idea创建maven工程 2.修改pom.xml文件如下: (需要下载jar包,时间可能稍 ...
- HDFS的API操作-获取文件列表信息
遍历 HDFS 中所有文件 递归遍历 @Test public void listFile() throws Exception{FileSystem fileSystem = FileSystem. ...
- 大数据之-Hadoop之HDFS的API操作_文件IO流_上传_案例---大数据之hadoop工作笔记0063
然后我们来看一下HDFS的I/O流操作,这里我们实现文件上传. 这个是文档代码 我们自己写一写,分5步
最新文章
- win定时关机_如何将电脑设置为定时关机?
- java.text.SimpleDateFormat多线程下的问题
- python flag函数_Python(函数基础,阶段总联系)
- C++ vector的用法
- 安徽中职计算机专业对口高考,安徽对口高考和普通高考有什么区别?
- 为什么我们选择 Flutter 开发移动应用?
- hadoop22---wait,notify
- github上的优秀项目和开发环境配置
- python 网站 批量 投票_python requests 简单实现易班自动登录,批量_文章发布,投票发布,评论,点赞,v2.0...
- BZOJ4199: [Noi2015]品酒大会
- ETS88 获取TesterID
- 阿里P6到P9的技术栈有哪些?程序员该如何准备学习?如何进入大厂
- 【火炉炼AI】机器学习031-KNN回归器模型的构建
- 明日传奇第三季/全集Legends of Tomorrow迅雷下载
- R语言LR逻辑回归实例
- 如何深入理解时间序列分析中的平稳性?
- window下vmware使用无线网卡nat的方式上网
- 苹果x怎么关机_苹果12怎么关机 iPhone12关机方法汇总
- 谈谈 Bias-Variance Tradeoff
- 如何使用Gulp完成项目的自动化构建