Hadoop学习之hdfs的操作
Hadoop学习之hdfs的操作
1.将HDFS中的文件复制到本地
package com.shujia.hdfs;import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;import java.io.IOException;public class Demo02Download {FileSystem fileSystem;// 创建执行对象// @Before: 前置通知, 在方法执行之前执行@Beforepublic void getFileSystem() throws IOException {Configuration entries = new Configuration();entries.set("fs.defaultFS", "hdfs://master:9000");fileSystem = FileSystem.get(entries);}// 实现文件复制到本地// @Test的作用,省略了public static void main(String[] args) {,表示测试类的方法@Testpublic void getData() throws IOException {String hdfsPath = "/NOTICE.txt";String localPath = "data/";// 将HDFS中的文件复制到本地fileSystem.copyToLocalFile(new Path(hdfsPath),new Path(localPath));}// @After: 后置通知, 在方法执行之后执行 。@Afterpublic void close() throws IOException {fileSystem.close();}}
2.上传数据到HDFS中
package com.shujia.hdfs;import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;public class Demo04PutData {public static void main(String[] args) throws IOException, URISyntaxException, InterruptedException {/*上传数据到HDFS中*/putData();putData2();}public static void putData() throws IOException {// 没有设置用户信息Configuration entries = new Configuration();entries.set("fs.defaultFS","hdfs://master:9000");FileSystem fileSystem = FileSystem.get(entries);// 从本地上传文件到HDFS上fileSystem.copyFromLocalFile(new Path("hadoop/data/students.txt"),new Path("/data/"));fileSystem.close();}public static void putData2() throws IOException, URISyntaxException, InterruptedException {// 设置了用户信息Configuration entries = new Configuration();entries.set("fs.defaultFS","hdfs://master:9000");/*FileSystem get(final URI uri, final Configuration conf,final String user)*/URI uri = new URI("hdfs://master:9000");// 获取FileSystem的实体类对象(传递uri到get函数中吗,会更改上传到HDFS中文件的用户信息)FileSystem fileSystem = FileSystem.get(uri,entries,"root");fileSystem.copyFromLocalFile(new Path("hadoop/data/students.txt"),new Path("/data/"));fileSystem.close();}
}
3.在HDFS上创建文件目录
package com.shujia.hdfs;import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;public class Demo05MakeDir {public static void main(String[] args) throws IOException, URISyntaxException, InterruptedException {/*上传数据到HDFS中*/mkdir();}public static void mkdir() throws IOException, URISyntaxException, InterruptedException {// 设置了用户信息Configuration entries = new Configuration();entries.set("fs.defaultFS","hdfs://master:9000");URI uri = new URI("hdfs://master:9000");FileSystem fileSystem = FileSystem.get(uri,entries,"root");fileSystem.mkdirs(new Path("/api"));
// fileSystem.mkdirs(new Path("/api/1/2"));fileSystem.close();}
}
4.删除HDFS上的文件目录
package com.shujia.hdfs;import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;public class Demo06Delete {public static void main(String[] args) throws IOException, URISyntaxException, InterruptedException {delete();}public static void delete() throws IOException, URISyntaxException, InterruptedException {// 设置了用户信息Configuration entries = new Configuration();entries.set("fs.defaultFS","hdfs://master:9000");URI uri = new URI("hdfs://master:9000");FileSystem fileSystem = FileSystem.get(uri,entries,"root");// fileSystem.delete(new Path("/api/1/2"));//TODO 参数recursive:如果path是一个目录并设置为true,则删除该目录,否则抛出异常。// 在文件的情况下,递归可以设置为true或false。fileSystem.delete(new Path("/api"),true);fileSystem.close();}
}
5.查看HDFS文件系统中文件和目录的元数据
package com.shujia.hdfs;import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.BlockLocation;
import org.apache.hadoop.fs.FileStatus;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;public class Demo07Liststatus {public static void main(String[] args) throws IOException, URISyntaxException, InterruptedException {getBlockLocation();}public static void getBlockLocation() throws IOException, URISyntaxException, InterruptedException {Configuration entries = new Configuration();entries.set("fs.defaultFS","hdfs://master:9000");URI uri = new URI("hdfs://master:9000");FileSystem fileSystem = FileSystem.get(uri,entries,"root");FileStatus fileStatus = fileSystem.getFileStatus(new Path("/hadoop-3.1.3.tar.gz"));System.out.println("路径:"+fileStatus.getPath());System.out.println("长度:"+fileStatus.getLen());System.out.println("副本数:"+fileStatus.getReplication());/*获取一个文件的文件指定开始和结束的部分数据所在的Block块位置BlockLocation[] getFileBlockLocations(FileStatus file,long start, long len)*/BlockLocation[] fileBlockLocations = fileSystem.getFileBlockLocations(fileStatus, 0, fileStatus.getLen());for (BlockLocation fileBlockLocation : fileBlockLocations) {System.out.println("整个长度:"+fileBlockLocation.getLength());System.out.println("偏移量,从文件的什么位置开始:"+fileBlockLocation.getOffset());System.out.println("整个主机:"+fileBlockLocation.getHosts());System.out.println("整个名称:"+fileBlockLocation.getNames());}fileSystem.close();}public static void getFileStatus() throws IOException, URISyntaxException, InterruptedException {Configuration entries = new Configuration();entries.set("fs.defaultFS","hdfs://master:9000");URI uri = new URI("hdfs://master:9000");FileSystem fileSystem = FileSystem.get(uri,entries,"root");// getFileStatus()获取FileStatus对象// FileStatus对象封装了文件系统中文件和目录的元数据,包括文件的长度、块大小、备份数、修改时间、所有者以及权限等信息。FileStatus fileStatus = fileSystem.getFileStatus(new Path("/hadoop-3.1.3.tar.gz"));System.out.println("路径:"+fileStatus.getPath());System.out.println("长度:"+fileStatus.getLen());System.out.println("副本数:"+fileStatus.getReplication());fileSystem.close();}public static void listStatus() throws IOException, URISyntaxException, InterruptedException {// 没有设置用户信息Configuration entries = new Configuration();entries.set("fs.defaultFS","hdfs://master:9000");URI uri = new URI("hdfs://master:9000");FileSystem fileSystem = FileSystem.get(uri,entries,"root");// listStatus()获取FileStatus对象数组,遍历根目录下的所有文件和目录的元数据FileStatus[] fileStatuses = fileSystem.listStatus(new Path("/"));for (FileStatus fileStatus : fileStatuses) {// 判断其是否为文件(检查这个抽象路径名表示的文件是否是普通文件),若为目录则输出其路径if (fileStatus.isFile()) {long blockSize = fileStatus.getBlockSize();System.out.println(fileStatus.getPath());System.out.println("Block块大小:"+blockSize);System.out.println("长度:"+fileStatus.getLen());}else {System.out.println(fileStatus.getPath());}}fileSystem.close();}
}
相关文章:
Hadoop学习之hdfs的操作
Hadoop学习之hdfs的操作 1.将HDFS中的文件复制到本地 package com.shujia.hdfs;import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.FileSystem; import org.apache.hadoop.fs.Path; import org.junit.After; import org.junit.Before; import org.j…...
DBAPI怎么进行数据格式转换
DBAPI如何进行数据格式的转换 假设现在有个API,根据学生id查询学生信息,访问API查看数据格式如下 {"data":[{"name":"Michale","phone_number":null,"id":77,"age":55}],"msg"…...
Oracle JSON 函数详解与实战
Oracle 数据库提供了丰富的 JSON 函数集,使得开发者可以高效地处理 JSON 数据。本文将详细介绍这些函数,包括它们的语法、使用场景、具体示例,以及在实际项目中的应用。 文章目录 JSON_VALUE语法参数说明示例 JSON_QUERY语法示例 JSON_TABLE语…...
C#面:请解释转发与跳转的区别
在C#中,转发(forwarding)和跳转(jumping)是两种不同的控制流程操作。 转发 是指将控制权从一个方法或函数转移到另一个方法或函数。在转发中,程序会将当前的执行状态传递给另一个方法,并在该方…...
Java+IDEA+SpringBoot药物不良反应ADR智能监测系统源码 ADR智能化监测系统源码
JavaIDEASpringBoot药物不良反应ADR智能监测系统源码 ADR智能化监测系统源码 药物不良反应(Adverse Drug Reaction,ADR)是指在使用合格药品时,在正常的用法和用量下出现的与用药目的无关的有害反应。这些反应往往因药物种类、使用…...
linux系统模拟资源消耗的简单手段
当我们在做系统性能,稳定性,高可用等特殊场景的测试时,往往要对计算机的硬件资源做出比较苛刻的限制,因此需要最简便的办法增加CPU,内存,磁盘,网络等硬件环境的资源压力。下面介绍实现这些操作的…...
吉林大学软件工程简答题整理
1.6种软件过程模型列举,及优缺点(每个都从时间、质量、过程、本身特点去考虑) 瀑布模型 优点缺点V模型 优点:缺点: 原型模型 优点:演化模型 建增模型 优点缺点螺旋模型 优点缺点喷泉模型 RUP、敏捷工程、…...
爬山算法介绍
目录 1.概述 2.产生 3.定义 4.优缺点 5.应用示例 6.未来展望 7.示例代码 1.概述 爬山算法是一种简单的启发式搜索算法,从起始点开始,每次选择当前位置邻域内的最优解作为下一个位置,直到达到目标点或无法继续前进。爬山算法的基本思想…...
在linux中配置关于GFS创建各种卷以及卷组--配置实验
服务器的相关信息 服务器的相关信息 卷名称 卷类型 空间大小 Brick dis-volume 分布式卷 12 Node1(/e6)、node2(/e6) Stripe-volume 条带卷 10 Node1(/d5)、node2(/d5) Rep-volume 复制卷 5 Node3(/d5)、node4(/d5) Dis-stripe 分布式条带卷 12 Node1(/b3)、node2(/b3)、node(…...
安泰电子:使用高压放大器时有哪些需要注意的呢
随着科技的不断进步,高压放大器在各种科学实验、工程应用和产业生产中扮演着重要的角色。然而,由于高压放大器的特殊性,使用时需要特别小心和谨慎。下面将详细介绍使用高压放大器时需要注意的事项,以确保安全、稳定地进行实验和应…...
为什么大部分新手做抖音小店赚不到钱?
大家好,我是喷火龙。 今天来给大家聊聊,为什么大部分新手做抖店赚不到钱? 不知道大家想过这个问题没有,可能有些人把赚不到钱的原因归结于市场、或者平台、又或者运营技术以及做店经验。 但我觉得这些都不是重点,重…...
跳跃游戏(2)
问题描述 给你一个非负整数数组 nums ,你最初位于数组的 第一个下标 。数组中的每个元素代表你在该位置可以跳跃的最大长度。 判断你是否能够到达最后一个下标,如果可以,返回 true ;否则,返回 false 。 输入࿱…...
11.Redis之zset类型
1.zset类型基本介绍 有序描述的是:升序/降序 Set 集合 1.唯一 2. 无序 孙行者,行者孙, 者行孙 >同一只猴~~ List有序的 孙行者,行者孙, 者行孙 >不同的猴~~ zset 中的 member 仍然要求是唯一的!!(score 则可以重复) 排序的规则是啥? 给 zset 中的 member 同…...
Python怎样将PDF拆分成多个文件
在 Python 中,你可以使用 PyPDF2 库来拆分 PDF 文件。以下是一个简单的示例,演示如何将一个 PDF 文件拆分为多个单页 PDF 文件。 首先,你需要安装 PyPDF2 库。如果尚未安装,可以使用以下命令进行安装: pip install P…...
C语言-----前置++和后置++的不同
#include <stdio.h> int main() {int a, b, c;a 5;c a;b c, c, a, a;b a c;printf("a %d b %d c %d\n:", a, b, c);return 0; }/*1、逗号运算符的优先级比赋值运算符号的优先级低2、、的优先级比高3、多个号在一起的时候,其优先级为后置、、…...
685. 冗余连接 II
685. 冗余连接 II 问题描述 在本问题中,有根树指满足以下条件的 有向 图。该树只有一个根节点,所有其他节点都是该根节点的后继。该树除了根节点之外的每一个节点都有且只有一个父节点,而根节点没有父节点。 输入一个有向图,该…...
自养号测评是什么?亚马逊、沃尔玛、Target卖家如何建立自己的护城河?
近期有跨境卖家咨询我自养买家账号测评的事情,他们还是有不了解自养号测评的,所以珑哥觉得有必要再讲一下卖家测评的一些事情,之前文章也说过。这可能是跨境卖家运营的一个趋势。今天珑哥着重来介绍一下自养号测评 一、什么叫做自养号测评&a…...
计算机毕业设计 | SpringBoot招投标 任务发布网站(附源码)
1,绪论 在市场范围内,任务发布网站很受欢迎,有很多开发者以及其他领域的牛人,更倾向于选择工作时间、工作场景更自由的零工市场寻求零散单子来补贴家用。 如今市场上,任务发布网站鱼龙混杂,用户需要找一个…...
element el-table表格表头某一列表头文字或者背景修改颜色
效果如下 整体代码 ,具体方法在最下面! <el-table v-loading"listLoading" :data"sendReceivList" element-loading-text"Loading" border fit ref"tableList" :header-cell-class-name"addClass&quo…...
移动云:连接未来的智慧之旅
随着数字化转型的加速,云服务在各行各业中的应用越来越广泛。移动云不仅提供了灵活的计算和存储资源,还通过创新的技术手段,为企业和开发者解决了许多实际问题。在这个变革的大背景下,移动云服务作为中国移动倾力打造的云业务品牌…...
深入剖析AI大模型:大模型时代的 Prompt 工程全解析
今天聊的内容,我认为是AI开发里面非常重要的内容。它在AI开发里无处不在,当你对 AI 助手说 "用李白的风格写一首关于人工智能的诗",或者让翻译模型 "将这段合同翻译成商务日语" 时,输入的这句话就是 Prompt。…...
《从零掌握MIPI CSI-2: 协议精解与FPGA摄像头开发实战》-- CSI-2 协议详细解析 (一)
CSI-2 协议详细解析 (一) 1. CSI-2层定义(CSI-2 Layer Definitions) 分层结构 :CSI-2协议分为6层: 物理层(PHY Layer) : 定义电气特性、时钟机制和传输介质(导线&#…...
《Playwright:微软的自动化测试工具详解》
Playwright 简介:声明内容来自网络,将内容拼接整理出来的文档 Playwright 是微软开发的自动化测试工具,支持 Chrome、Firefox、Safari 等主流浏览器,提供多语言 API(Python、JavaScript、Java、.NET)。它的特点包括&a…...
五年级数学知识边界总结思考-下册
目录 一、背景二、过程1.观察物体小学五年级下册“观察物体”知识点详解:由来、作用与意义**一、知识点核心内容****二、知识点的由来:从生活实践到数学抽象****三、知识的作用:解决实际问题的工具****四、学习的意义:培养核心素养…...
LLM基础1_语言模型如何处理文本
基于GitHub项目:https://github.com/datawhalechina/llms-from-scratch-cn 工具介绍 tiktoken:OpenAI开发的专业"分词器" torch:Facebook开发的强力计算引擎,相当于超级计算器 理解词嵌入:给词语画"…...
【论文阅读28】-CNN-BiLSTM-Attention-(2024)
本文把滑坡位移序列拆开、筛优质因子,再用 CNN-BiLSTM-Attention 来动态预测每个子序列,最后重构出总位移,预测效果超越传统模型。 文章目录 1 引言2 方法2.1 位移时间序列加性模型2.2 变分模态分解 (VMD) 具体步骤2.3.1 样本熵(S…...
聊一聊接口测试的意义有哪些?
目录 一、隔离性 & 早期测试 二、保障系统集成质量 三、验证业务逻辑的核心层 四、提升测试效率与覆盖度 五、系统稳定性的守护者 六、驱动团队协作与契约管理 七、性能与扩展性的前置评估 八、持续交付的核心支撑 接口测试的意义可以从四个维度展开,首…...
全志A40i android7.1 调试信息打印串口由uart0改为uart3
一,概述 1. 目的 将调试信息打印串口由uart0改为uart3。 2. 版本信息 Uboot版本:2014.07; Kernel版本:Linux-3.10; 二,Uboot 1. sys_config.fex改动 使能uart3(TX:PH00 RX:PH01),并让boo…...
Map相关知识
数据结构 二叉树 二叉树,顾名思义,每个节点最多有两个“叉”,也就是两个子节点,分别是左子 节点和右子节点。不过,二叉树并不要求每个节点都有两个子节点,有的节点只 有左子节点,有的节点只有…...
【Oracle】分区表
个人主页:Guiat 归属专栏:Oracle 文章目录 1. 分区表基础概述1.1 分区表的概念与优势1.2 分区类型概览1.3 分区表的工作原理 2. 范围分区 (RANGE Partitioning)2.1 基础范围分区2.1.1 按日期范围分区2.1.2 按数值范围分区 2.2 间隔分区 (INTERVAL Partit…...
