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

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 。 输入&#xff1…...

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、多个号在一起的时候&#xff0c;其优先级为后置、、…...

685. 冗余连接 II

685. 冗余连接 II 问题描述 在本问题中&#xff0c;有根树指满足以下条件的 有向 图。该树只有一个根节点&#xff0c;所有其他节点都是该根节点的后继。该树除了根节点之外的每一个节点都有且只有一个父节点&#xff0c;而根节点没有父节点。 输入一个有向图&#xff0c;该…...

自养号测评是什么?亚马逊、沃尔玛、Target卖家如何建立自己的护城河?

近期有跨境卖家咨询我自养买家账号测评的事情&#xff0c;他们还是有不了解自养号测评的&#xff0c;所以珑哥觉得有必要再讲一下卖家测评的一些事情&#xff0c;之前文章也说过。这可能是跨境卖家运营的一个趋势。今天珑哥着重来介绍一下自养号测评 一、什么叫做自养号测评&a…...

计算机毕业设计 | SpringBoot招投标 任务发布网站(附源码)

1&#xff0c;绪论 在市场范围内&#xff0c;任务发布网站很受欢迎&#xff0c;有很多开发者以及其他领域的牛人&#xff0c;更倾向于选择工作时间、工作场景更自由的零工市场寻求零散单子来补贴家用。 如今市场上&#xff0c;任务发布网站鱼龙混杂&#xff0c;用户需要找一个…...

element el-table表格表头某一列表头文字或者背景修改颜色

效果如下 整体代码 &#xff0c;具体方法在最下面&#xff01; <el-table v-loading"listLoading" :data"sendReceivList" element-loading-text"Loading" border fit ref"tableList" :header-cell-class-name"addClass&quo…...

移动云:连接未来的智慧之旅

随着数字化转型的加速&#xff0c;云服务在各行各业中的应用越来越广泛。移动云不仅提供了灵活的计算和存储资源&#xff0c;还通过创新的技术手段&#xff0c;为企业和开发者解决了许多实际问题。在这个变革的大背景下&#xff0c;移动云服务作为中国移动倾力打造的云业务品牌…...

浅谈 React Hooks

React Hooks 是 React 16.8 引入的一组 API&#xff0c;用于在函数组件中使用 state 和其他 React 特性&#xff08;例如生命周期方法、context 等&#xff09;。Hooks 通过简洁的函数接口&#xff0c;解决了状态与 UI 的高度解耦&#xff0c;通过函数式编程范式实现更灵活 Rea…...

C++实现分布式网络通信框架RPC(3)--rpc调用端

目录 一、前言 二、UserServiceRpc_Stub 三、 CallMethod方法的重写 头文件 实现 四、rpc调用端的调用 实现 五、 google::protobuf::RpcController *controller 头文件 实现 六、总结 一、前言 在前边的文章中&#xff0c;我们已经大致实现了rpc服务端的各项功能代…...

智慧医疗能源事业线深度画像分析(上)

引言 医疗行业作为现代社会的关键基础设施,其能源消耗与环境影响正日益受到关注。随着全球"双碳"目标的推进和可持续发展理念的深入,智慧医疗能源事业线应运而生,致力于通过创新技术与管理方案,重构医疗领域的能源使用模式。这一事业线融合了能源管理、可持续发…...

基于服务器使用 apt 安装、配置 Nginx

&#x1f9fe; 一、查看可安装的 Nginx 版本 首先&#xff0c;你可以运行以下命令查看可用版本&#xff1a; apt-cache madison nginx-core输出示例&#xff1a; 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文件&#xff0c;然后打开终端&#xff0c;进入下载文件夹&#xff0c;键入命令 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 内存管理实战精讲&#xff1a;核心原理与面试常考点全解析 Linux 内核内存管理是系统设计中最复杂但也最核心的模块之一。它不仅支撑着虚拟内存机制、物理内存分配、进程隔离与资源复用&#xff0c;还直接决定系统运行的性能与稳定性。无论你是嵌入式开发者、内核调试工…...

JS手写代码篇----使用Promise封装AJAX请求

15、使用Promise封装AJAX请求 promise就有reject和resolve了&#xff0c;就不必写成功和失败的回调函数了 const BASEURL ./手写ajax/test.jsonfunction promiseAjax() {return new Promise((resolve, reject) > {const xhr new XMLHttpRequest();xhr.open("get&quo…...

【Linux】Linux 系统默认的目录及作用说明

博主介绍&#xff1a;✌全网粉丝23W&#xff0c;CSDN博客专家、Java领域优质创作者&#xff0c;掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域✌ 技术范围&#xff1a;SpringBoot、SpringCloud、Vue、SSM、HTML、Nodejs、Python、MySQL、PostgreSQL、大数据、物…...

C语言中提供的第三方库之哈希表实现

一. 简介 前面一篇文章简单学习了C语言中第三方库&#xff08;uthash库&#xff09;提供对哈希表的操作&#xff0c;文章如下&#xff1a; C语言中提供的第三方库uthash常用接口-CSDN博客 本文简单学习一下第三方库 uthash库对哈希表的操作。 二. uthash库哈希表操作示例 u…...