当前位置: 首页 > news >正文

HDFS相关API操作

文章目录

    • API文档
    • 环境配置
    • API操作
      • 准备工作
      • 创建文件夹
      • 文件上传
      • 文件下载
      • 文件删除
      • 文件的更名和移动
      • 获取文件详细信息

API文档

HDFS API官方文档:https://hadoop.apache.org/docs/r3.3.1/api/index.html

环境配置

将Hadoop的Jar包解压到非中文路径(例如D:\hadoop\hadoop-2.7.2)

配置HADOOP_HOME环境变量

在这里插入图片描述

配置Path环境变量

在这里插入图片描述

API操作

准备工作

创建一个[Maven]工程HdfsClientDemo

引入hadoop-client依赖

<dependencies><dependency><grupId>org.apache.hadoop</groupId><artifactId>hadoop-client</artifactId><version>2.7.2</version></dependency><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version></dependency><dependency><groupId>org.slf4j</groupId><artifactId>slf4j-log4j12</artifactId><version>1.7.30</version></dependency></dependencies>

创建HdfsClient 类

创建文件夹

public class HdfsClient {//创建目录@Testpublic void testMkdir() throws URISyntaxException, IOException, InterruptedException {//连接的集群nn地址URI uri = new URI("hdfs://node1:8020");//创建一个配置文件Configuration configuration = new Configuration();//用户String user = "atguigu";//1、获取到了客户端对象FileSystem fileSystem = FileSystem.get(uri, configuration, user);//2、创建一个文件夹fileSystem.mkdirs(new Path("/xiyou/huaguoshan"));//3、关闭资源fileSystem.close();}
}

上面这样写代码有点冗余,我们通过AOP切面将初始化和关流的操作拆分出来,后续只需要关注核心逻辑就可以了。
实际开发中这样设计也不太好,建议搞个工厂类

public class HdfsClient {private FileSystem fs;@Beforepublic void init() throws URISyntaxException, IOException, InterruptedException {// 连接的集群nn地址URI uri = new URI("hdfs://node1:8020");// 创建一个配置文件Configuration configuration = new Configuration();configuration.set("dfs.replication", "2");// 用户String user = "atguigu";// 1、获取到了客户端对象fs = FileSystem.get(uri, configuration, user);}@Testpublic void testMkdir() throws URISyntaxException, IOException, InterruptedException {//创建一个文件夹fs.mkdirs(new Path("/xiyou/huaguoshan2"));}@Afterpublic void close() throws IOException {// 3、关闭资源fs.close();}}

文件上传

@Testpublic void testPut() throws IOException {// 参数解读,参数1:表示删除原数据、参数2:是否允许覆盖、参数3:原数据路径、参数4:目的地路径fs.copyFromLocalFile(false, true, new Path("D:\\bigData\\file\\sunwukong.txt"), new Path("hdfs://node1/xiyou/huaguoshan"));}

文件下载

    //文件下载@Testpublic void testGet() throws IOException {//参数的解读,参数一:原文件是否删除、参数二:原文件路径HDFS、参数三:Windows目标地址路径、参数四:crc校验
//        fs.copyToLocalFile(false, new Path("hdfs://node1/xiyou/huaguoshan2/sunwukong.txt"), new Path("D:\\bigData\\file\\download"), false);fs.copyToLocalFile(false, new Path("hdfs://node1/xiyou/huaguoshan2/"), new Path("D:\\bigData\\file\\download"), false);
//      fs.copyToLocalFile(false, new Path("hdfs://node1/a.txt"), new Path("D:\\"), false);}

文件删除

//删除
@Test
public void testRm() throws IOException {//参数解读,参数1:要删除的路径、参数2:是否递归删除//删除文件//fs.delete(new Path("/jdk-8u212-linux-x64.tar.gz"),false);//删除空目录//fs.delete(new Path("/xiyou"), false);//删除非空目录fs.delete(new Path("/jinguo"), true);
}

文件的更名和移动

//文件的更名和移动
@Test
public void testmv() throws IOException {//参数解读,参数1:原文件路径、参数2:目标文件路径//对文件名称的修改fs.rename(new Path("/input/word.txt"), new Path("/input/ss.txt"));//文件的移动和更名fs.rename(new Path("/input/ss.txt"), new Path("/cls.txt"));//目录更名fs.rename(new Path("/input"), new Path("/output"));
}

获取文件详细信息

    //获取文件详细信息@Testpublic void fileDetail() throws IOException {//获取所有文件信息RemoteIterator<LocatedFileStatus> listFiles = fs.listFiles(new Path("/"), true);//遍历文件while (listFiles.hasNext()) {LocatedFileStatus fileStatus = listFiles.next();System.out.println(fileStatus.getPath());System.out.println(fileStatus.getPermission());System.out.println(fileStatus.getOwner());System.out.println(fileStatus.getGroup());System.out.println(fileStatus.getLen());System.out.println(fileStatus.getModificationTime());System.out.println(fileStatus.getReplication());System.out.println(fileStatus.getBlockSize());System.out.println(fileStatus.getPath().getName());//获取块信息BlockLocation[] blockLocations = fileStatus.getBlockLocations();System.out.println(Arrays.toString(blockLocations));}}

相关文章:

HDFS相关API操作

文章目录 API文档环境配置API操作准备工作创建文件夹文件上传文件下载文件删除文件的更名和移动获取文件详细信息 API文档 HDFS API官方文档&#xff1a;https://hadoop.apache.org/docs/r3.3.1/api/index.html 环境配置 将Hadoop的Jar包解压到非中文路径&#xff08;例如D:…...

【AI视野·今日Robot 机器人论文速览 第七十二期】Mon, 8 Jan 2024

AI视野今日CS.Robotics 机器人学论文速览 Mon, 8 Jan 2024 Totally 13 papers &#x1f449;上期速览✈更多精彩请移步主页 Daily Robotics Papers Deep Reinforcement Learning for Local Path Following of an Autonomous Formula SAE Vehicle Authors Harvey Merton, Thoma…...

背包问题(补充中)

1.01背包 有 N 件物品和一个容量是 V 的背包。每件物品只能使用一次。 第 i 件物品的体积是 v[i]&#xff0c;价值是 w[i]。 求解将哪些物品装入背包&#xff0c;可使这些物品的总体积不超过背包容量&#xff0c;且总价值最大。 输出最大价值。 对于01背包问题&#xff0c;只有…...

十三、QPalette的简单使用(Qt5 GUI系列)

目录 一、设计需求 二、实现代码 三、代码解析 四、总结 一、设计需求 在实际应用中&#xff0c;经常需要改变某个控件的颜色外观&#xff0c;如背景、文字颜色等。Qt提供的调色板类 QPalette 专门用于管理对话框的外观显示。QPalette 类相当于对话框或是控件的调色板&…...

uniapp小程序超出一行显示...并展示更多按钮

注意:全部标签需要浮动在父盒子右边哦 循环获取所有需要展示数据标签的高度 this.goods this.goods.map(item > ({...item,showBtn: false}));this.$nextTick(() > {uni.createSelectorQuery().in(this).selectAll(".cart-info").boundingClientRect((data)…...

Qt打包程序

添加链接描述...

实验用PFA材质烧杯和高硼硅玻璃材质有什么区别?

高硼硅玻璃烧杯和特氟龙烧杯是两种常见的实验室容器&#xff0c;它们有不同的特点和应用。 高硼硅玻璃烧杯&#xff1a; 高硼硅玻璃烧杯是一种由硅酸盐和硼酸盐等原料制成的玻璃材质。它具有以下特点&#xff1a; 耐热性能较好&#xff0c;可以承受较高的温度变化。 抗化学侵…...

Raspbian安装摄像头

Raspbian安装摄像头 1. 源由2. 摄像头2.1 选型2.2 系统2.3 安装 3. 配置&命令3.1 命令3.2 配置 4. 测试4.1 拍照4.1.1 libcamera-jpeg4.1.2 libcamera-still 4.2 视频流4.2.1 RTSP流4.2.2 TCP流 5. 参考资料 1. 源由 家里闲置两块树莓派&#xff0c;打算做个WiFi视频流RTS…...

迅腾文化用网络集成化生态系统助力品牌之路的坚实后盾

商业竞争激烈&#xff0c;品牌不仅是企业的标志和形象&#xff0c;更是其核心价值和竞争力的体现。然而&#xff0c;企业在品牌推广过程中面临着诸多如缺乏有效的渠道管理、品牌形象模糊以及竞争激烈的市场环境等。这些阻碍着企业的品牌发展和市场占有率的提升。本文将通过企业…...

2401C++,C++编译时自动加密

编译时加密串 编译时加密串,运行时动态解密.此自定义加密算法可增加破解的难度,因为攻击者不仅需要逆向工程代码,还需要理解加密算法. 这样对代码的改动小,不影响代码可读性. 下面是使用boost.hana编译时加密串的示例: #include <string> #include <iostream> #i…...

vue 自定义网页图标 favicon.ico 和 网页标题

效果预览 1. 添加配置 vue.config.js 在 module.exports { 内添加 // 自定义网页图标pwa: {iconPaths: {favicon32: "./favicon.ico",favicon16: "./favicon.ico",appleTouchIcon: "./favicon.ico",maskIcon: "./favicon.ico",msTil…...

JOSEF约瑟端子排中间继电器 DZY-204 DC110V 导轨安装,板前接线

DZY系列端子排中间继电器 系列型号&#xff1a; DZY-101端子排中间继电器 DZY-104端子排中间继电器 DZY-105端子排中间继电器 DZY-301端子排中间继电器 DZY-106端子排中间继电器 DZY-401端子排中间继电器 DZY-204端子排中间继电器 一、 概述 DZY-204端子排中间继电器用于各种…...

VMware workstation搭建与安装AlmaLinux-9.2虚拟机

VMware workstation搭建与安装AlmaLinux-9.2虚拟机 适用于需要在VMware workstation平台安装AlmaLinux-9.2&#xff08;最小化安装、无图形化界面&#xff09;虚拟机。 1. 安装准备 1.1 安装平台 Windows 11 1.2. 软件信息 软件名称软件版本安装路径VMware-workstation 1…...

小程序基础学习(js混编)

在组件中使用外部js代码实现数据改变 先创建js文件 编写一些组件代码 编写外部js代码 在组件的js中引入外部js 在 app.json中添加路径规则 组件代码 <!--components/my-behavior/my-behavior.wxml--> <view><view>当前计数为{{count}}</view> <v…...

git秘钥过期 ERROR: Your SSH key has expired

文章目录 1、错误提示Your SSH key has expired2、登录Github确认3、重新设置秘钥 1、错误提示Your SSH key has expired 使用git命令时遇到Github 的 SSH Key秘钥过期&#xff0c;提示错误ERROR: Your SSH key has expired 2、登录Github确认 首先登录Github查看&#xff…...

系列十三、查询数据库中某个库、表、索引等所占空间的大小

一、information_schema数据库 1.1、概述 information_schema数据库是MySQL出厂默认带的一个数据库&#xff0c;不管我们是在Linux中安装MySQL还是在Windows中安装MySQL&#xff0c;安装好后都会有一个数据库information_schema&#xff0c;这个库中存放了其他库的所有信息。 …...

【论文解读】SiamMAE:用于从视频中学习视觉对应关系的 MAE 简单扩展

来源&#xff1a;投稿 作者&#xff1a;橡皮 编辑&#xff1a;学姐 论文链接&#xff1a;https://siam-mae-video.github.io/resources/paper.pdf 项目主页&#xff1a;https://siam-mae-video.github.io/ 1.背景 时间是视觉学习背景下的一个特殊维度&#xff0c;它提供了一…...

Docker(Mysql)将数据库表封装进容器内

1、使用mysqldump命令&#xff0c;导出SQL文件&#xff1a; # dbName为待导出的数据库名称 mysqldump -h localhost -u root -p dbName --add-drop-table >./dump.sql2、构建镜像 2.1、编写Dockerflie文件 vim DockerfileDockerfile 内容如下&#xff1a; # 依赖的原始镜…...

细谈Type-C Port的Data Role、Power Role | 乐得瑞科技

一、Data Role协议通讯过程和工作原理 Data Role描述了数据传输的方向。在Type-C接口中&#xff0c;下行端口&#xff08;DFP&#xff09;可以作为Host或HUB&#xff0c;负责提供VBUS和VCONN&#xff0c;并接收数据。与之相对的上行端口&#xff08;UFP&#xff09;则作为Devi…...

团结引擎的安装

团结引擎有多种方式可以安装&#xff0c;具体可以参考团结引擎官方文档&#xff0c;这里我们使用最简单的安装方式&#xff0c;通过团结Hub来安装。 1. 安装 Tuanjie Hub 进入团结引擎官网&#xff0c;点击右上角的【下载Unity】&#xff0c;进入下载界面&#xff0c;选择“下载…...

如何为Rainmeter贡献多语言翻译:完整指南

如何为Rainmeter贡献多语言翻译&#xff1a;完整指南 【免费下载链接】rainmeter Desktop customization tool for Windows 项目地址: https://gitcode.com/gh_mirrors/ra/rainmeter Rainmeter作为一款强大的Windows桌面自定义工具&#xff0c;支持全球用户通过多语言界…...

想给西安碑林、雁塔等区旧房装修?知名靠谱装修公司在哪找?

在西安碑林、雁塔等区拥有一套旧房&#xff0c;想要进行装修&#xff0c;却不知道如何找到知名靠谱的装修公司&#xff1f;别担心&#xff0c;本文将为你详细介绍选择装修公司的方法&#xff0c;并重点推荐西安王师傅装修工程有限公司&#xff0c;为你的旧房装修之旅提供可靠的…...

2026Agent元年!手把手教你从0到1搭建高能智能体,小白也能秒变大神!

逼自己练完这些&#xff0c;你的Agent搭建就很牛了&#xff01;&#xff01;2026年可谓是Agent元年&#xff0c;智能体&#xff08;AI Agent&#xff09;正以惊人的速度重塑我们的工作方式&#xff0c;从简单的被动响应工具&#xff0c;进化为能自主规划、执行、协作的"数…...

ReACT深度解析四:从数字员工到数字文明——智能体的终极演进与文明级想象

内容定位&#xff1a;​ 未来畅想文章日期&#xff1a;​ 2026-03-26【场景引入】凌晨两点&#xff0c;南京的OpenClaw训练营早已散场&#xff0c;但服务器日志仍在跳动。一个刚被赋予“学习进化”权限的电商客服智能体&#xff0c;在完成今日第317个订单查询后&#xff0c;没有…...

网页在线编辑 Office 实现|软航控件集成入门实战①

在 OA、ERP、管理系统开发中&#xff0c;网页在线编辑 Office、在线预览 Word/Excel/PPT/PDF是高频刚需。自己从零开发兼容性差、周期长&#xff0c;集成成熟控件是最快、最稳的方案。本文以软航 Office 文档控件为例&#xff0c;从零到一教你完成 Windows 端集成&#xff0c;新…...

电动汽车工程师视角:碳化硅模块在电驱系统中的应用实战(含热管理设计)

碳化硅功率模块在电动汽车电驱系统中的工程实践 当一辆搭载碳化硅逆变器的电动汽车从静止加速到100km/h时&#xff0c;功率模块内部的温度变化可能超过100℃。这种极端工况正是第三代半导体材料大显身手的舞台。作为参与过多个量产项目的电驱系统工程师&#xff0c;我想分享一些…...

保姆级教程:在YOLOv12中集成CBAM注意力模块(附完整代码与配置文件)

从零实现YOLOv12与CBAM注意力模块的深度整合实战指南 在目标检测领域&#xff0c;YOLO系列算法始终保持着前沿地位。最新发布的YOLOv12在速度和精度之间取得了更好的平衡&#xff0c;而注意力机制的引入则能进一步提升模型对关键特征的捕捉能力。本教程将手把手带你完成CBAM注…...

相机潜能解锁:从限制突破到专业创作

相机潜能解锁&#xff1a;从限制突破到专业创作 【免费下载链接】OpenMemories-Tweak Unlock your Sony cameras settings 项目地址: https://gitcode.com/gh_mirrors/op/OpenMemories-Tweak OpenMemories-Tweak作为一款专为索尼相机设计的系统级解锁工具&#xff0c;通…...

4步实现Android Studio本地化配置:从语言障碍到高效开发

4步实现Android Studio本地化配置&#xff1a;从语言障碍到高效开发 【免费下载链接】AndroidStudioChineseLanguagePack AndroidStudio中文插件(官方修改版本&#xff09; 项目地址: https://gitcode.com/gh_mirrors/an/AndroidStudioChineseLanguagePack 问题诊断&…...

运维提效实战:用 Ansible+Cron 搞定日志自动清理,再也不用半夜爬起来删日志了

前言 作为常年和服务器打交道的运维人&#xff0c;估计没人没经历过半夜被磁盘爆满告警吵醒的崩溃 —— 远程登服务器、挨个找日志文件、手动删旧日志&#xff0c;一套操作下来人彻底清醒&#xff0c;回头还得担心误删关键文件。 其实这类重复又机械的运维活儿&#xff0c;完全…...