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…...
移动云:连接未来的智慧之旅
随着数字化转型的加速,云服务在各行各业中的应用越来越广泛。移动云不仅提供了灵活的计算和存储资源,还通过创新的技术手段,为企业和开发者解决了许多实际问题。在这个变革的大背景下,移动云服务作为中国移动倾力打造的云业务品牌…...
浅谈 React Hooks
React Hooks 是 React 16.8 引入的一组 API,用于在函数组件中使用 state 和其他 React 特性(例如生命周期方法、context 等)。Hooks 通过简洁的函数接口,解决了状态与 UI 的高度解耦,通过函数式编程范式实现更灵活 Rea…...
C++实现分布式网络通信框架RPC(3)--rpc调用端
目录 一、前言 二、UserServiceRpc_Stub 三、 CallMethod方法的重写 头文件 实现 四、rpc调用端的调用 实现 五、 google::protobuf::RpcController *controller 头文件 实现 六、总结 一、前言 在前边的文章中,我们已经大致实现了rpc服务端的各项功能代…...
智慧医疗能源事业线深度画像分析(上)
引言 医疗行业作为现代社会的关键基础设施,其能源消耗与环境影响正日益受到关注。随着全球"双碳"目标的推进和可持续发展理念的深入,智慧医疗能源事业线应运而生,致力于通过创新技术与管理方案,重构医疗领域的能源使用模式。这一事业线融合了能源管理、可持续发…...
基于服务器使用 apt 安装、配置 Nginx
🧾 一、查看可安装的 Nginx 版本 首先,你可以运行以下命令查看可用版本: apt-cache madison nginx-core输出示例: nginx-core | 1.18.0-6ubuntu14.6 | http://archive.ubuntu.com/ubuntu focal-updates/main amd64 Packages ng…...
1.3 VSCode安装与环境配置
进入网址Visual Studio Code - Code Editing. Redefined下载.deb文件,然后打开终端,进入下载文件夹,键入命令 sudo dpkg -i code_1.100.3-1748872405_amd64.deb 在终端键入命令code即启动vscode 需要安装插件列表 1.Chinese简化 2.ros …...
在鸿蒙HarmonyOS 5中使用DevEco Studio实现录音机应用
1. 项目配置与权限设置 1.1 配置module.json5 {"module": {"requestPermissions": [{"name": "ohos.permission.MICROPHONE","reason": "录音需要麦克风权限"},{"name": "ohos.permission.WRITE…...
Linux 内存管理实战精讲:核心原理与面试常考点全解析
Linux 内存管理实战精讲:核心原理与面试常考点全解析 Linux 内核内存管理是系统设计中最复杂但也最核心的模块之一。它不仅支撑着虚拟内存机制、物理内存分配、进程隔离与资源复用,还直接决定系统运行的性能与稳定性。无论你是嵌入式开发者、内核调试工…...
JS手写代码篇----使用Promise封装AJAX请求
15、使用Promise封装AJAX请求 promise就有reject和resolve了,就不必写成功和失败的回调函数了 const BASEURL ./手写ajax/test.jsonfunction promiseAjax() {return new Promise((resolve, reject) > {const xhr new XMLHttpRequest();xhr.open("get&quo…...
【Linux】Linux 系统默认的目录及作用说明
博主介绍:✌全网粉丝23W,CSDN博客专家、Java领域优质创作者,掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域✌ 技术范围:SpringBoot、SpringCloud、Vue、SSM、HTML、Nodejs、Python、MySQL、PostgreSQL、大数据、物…...
C语言中提供的第三方库之哈希表实现
一. 简介 前面一篇文章简单学习了C语言中第三方库(uthash库)提供对哈希表的操作,文章如下: C语言中提供的第三方库uthash常用接口-CSDN博客 本文简单学习一下第三方库 uthash库对哈希表的操作。 二. uthash库哈希表操作示例 u…...
