当前位置: 首页 > 编程日记 > 正文

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();}
}

相关文章:

微信小程序-锚点定位+内容滑动控制导航选中

之前两篇文章分别介绍了锚点定位和滑动内容影响导航选中&#xff0c;这里我们就结合起来&#xff0c;实现这两个功能&#xff01; 思路不再多说&#xff0c;直接上干货&#xff01; WXML <view class"navigateBox"><view class"title"><ima…

MATLAB【十四】————调用深度库生成exe,批量运行三层文件夹下图片,保存结果

运行路径&#xff1a;D:\matlab\cmd_batch_processing 文件夹架构&#xff1a; clear; clc; close all;%% crop the im into 256*256oriDataPath D:\matlab\cmd_batch_processing\data\; targetPathOri D:\matlab\cmd_batch_processing\result\;report_path D:\matlab\cm…

JDK1.8学习

2019独角兽企业重金招聘Python工程师标准>>> List<OrderGoodsDetail> olist BeanMapper.mapList(list,OrderGoodsDetail.class);List<String> list2 Arrays.asList("123", "45634", "7892", "abch", "s…

HDFS的数据流

目录 HDFS写数据流程 剖析文件写入 网络拓扑-节点距离计算 机架感知&#xff08;副本存储节点选择&#xff09; Hadoop2.7.2 副本节点选择 HDFS读数据流程 HDFS写数据流程 剖析文件写入 1&#xff09;客户端通过Distributed FileSystem模块向NameNode请求上传文件&#x…

Js----闭包

1、闭包的概念&#xff1a;(我找了很多&#xff0c;看大家的理解) A:闭包是指可以包含自由&#xff08;未绑定到特定对象&#xff09;变量的代码块&#xff1b; 这些变量不是在这个代码块内或者任何全局上下文中定义的&#xff0c;而是在定义代码块的环境中定义&#xff08;局部…

【C++】【四】企业链表

// 企业链表.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。 // 链表改进版 企业常用#include <iostream> #include<stdlib.h>//链表小节点 不包含数据域 typedef struct linknode {struct linknode* next; }linknode; //链表节点 数据指…

GoldenGate的Logdump工具使用简介

Logdump工具是GoldenGate提供的一个用于查询、分析、过滤、查看和保存存储在trail文件或extract文件中的数据的工具。1、启动Logdump工具[oraclerhel6 ~]$ cd /ogg [oraclerhel6 ogg]$ ./logdumpOracle GoldenGate Log File Dump Utility for Oracle Version 12.2.0.1.1 OGGCOR…

scala惰性函数

惰性计算&#xff08;尽可能延迟表达式求值&#xff09;是许多函数式编程语言的特性。惰性集合在需要时提供其元素&#xff0c;无需预先计算它们&#xff0c;这带来了一些好处。首先&#xff0c;您可以将耗时的计算推迟到绝对需要的时候。其次&#xff0c;您可以创造无限个集合…

计算机组成原理-第3章-3.1

|--总线&#xff1a;本质上就是一组连线&#xff0c;通路 |--发展过程&#xff1a; 分散连接时代&#xff1a; 运算器为中心 ↓ 存储器为中心 ↓ 中断&#xff0c;DMA的出现修正 ↓ 依旧无法解决效率问题 总线连接时代&#xff1a; 以CPU为核心&#xff0c;双总线&#xff1a;M…

【C++】【三】单向链表

// 单向链表.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。 //#include <iostream> #include<stdlib.h>typedef struct LINKNODE {void* data;struct LINKNODE* next; }linknode;typedef struct LINKLIST {LINKNODE* head;int size; }lin…

gulp相关说明

1.当你按下ctrls 或切换到浏览器&#xff0c;浏览器将会会自动刷新 如果你修改的是html文件将会刷新网页如果你修改的是css或less&#xff0c;这个less文件或css文件将会被重载而不是刷新整个页面&#xff08;这个特性在写单页面应用时尤为实用&#xff09;2.模板引入 考虑以下…

IDEA中提示:Warning:java: 源值1.5已过时, 将在未来所有发行版中删除

问题描述&#xff1a; 运行Java Web项目时&#xff0c;IDEA中提示&#xff1a;Warning:java: 源值1.5已过时, 将在未来所有发行版中删除解决方法&#xff1a; 1. 打开【File】—【Project Structure】&#xff0c;找到以下两个地方&#xff1a; Project Structure->Proje…

mysql 数据库乱码

mysql 数据库乱码 转载自https://www.cnblogs.com/gne-hwz/p/8748028.html 如有侵权&#xff0c;请联系。 遇到这种情况&#xff0c;现有项目的数据库已经建好&#xff0c;数据表也已经创建完成。 问题来的&#xff0c;数据库不能插入中文&#xff0c;调试时候发现中文数据从发…

【C++】【二】动态数组-Dynamic_linklist

// dynamicArray.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。 // #include <stdlib.h> #include <iostream>typedef struct DYNAMICARRAY {int* paddr;int size;int capacity; }dynamiCarray;dynamiCarray* Init_dynamiCarray() {dynam…

在MySQL和PostgreSQL之外,为什么阿里要研发HybridDB数据库?

编者按\\在大数据火遍IT界之前&#xff0c;大家对数据信息的挖掘通常聚焦在BI&#xff08;Business Intelligence&#xff09;之上。BI具有着明确的分析需求&#xff0c;清晰地知道需要处理哪些信息&#xff0c;并且如何最终获得多维度的SQL类型数据&#xff0c;这种多维度的分…

Linux命令-安装zip和unzip命令

1 [rootiz2zeea05by6vofxzsoxdbz elasticsearch]# unzip elasticsearch-6.2.4.zip 2 -bash: unzip: command not found 如果你如法使用unzip命令解压.zip文件&#xff0c;可能是你没有安装unzip软件&#xff0c;下面是安装方法 命令&#xff1a; yum list | grep zip/unzip …

【C++】【五】循环链表

数据结构&#xff1a;具体的高效有序的管理内存的方法。 链表&#xff1a;数据结构的一种 节点&#xff1a;每一块内存 每一个节点可以是裸指针 也可以是结构体 &#xff0c;结合企业链表的思路可以将类型强转&#xff0c;完成高效的访问。main.cc // 单向循环链表.cpp …

IntelliJ IDEA 设置项目编码

2019独角兽企业重金招聘Python工程师标准>>> IntelliJ IDEA-> Editor->File Encodings 转载于:https://my.oschina.net/bigxuan/blog/804345

util.sh 脚本

#!/bin/bash for i in zzzhadoop101 zzzhadoop102 zzzhadoop103 doecho " $i "ssh $i /opt/module/jdk1.8.0_144/bin/jps donebin目录是在环境变量里的&#xff0c;所以在哪都可以执行 /home/zzz/bin目录下touch util.sh [zzzhadoop101 bin]$ touch …

bzoj3467: Crash和陶陶的游戏

就一篇题解&#xff1a; BZOJ3467 : Crash和陶陶的游戏 - weixin_34248487的博客 - CSDN博客 1.离线&#xff0c;建出Atrie树&#xff1b;B树的倍增哈希数组&#xff0c;节点按照到根路径字典序排序 2.处理A节点对应前缀对应B中的极长可以匹配的区间。在父亲节点区间内二分即可…

载入图像并且显示

#include <opencv2/opencv.hpp> using namespace cv;void main( ) { const char *fileName "1.jpg";Mat srcImage imread("1.jpg");imshow(fileName,srcImage);waitKey(0); }

alter system switch logfile与alter system archive log current的区别

以前知道 ALTER SYSTEM SWITCH LOGFILE对单实例数据库或RAC中的当前实例执行日志切换&#xff0c; ALTER SYSTEM ARCHIVE LOG CURRENT会对数据库中的所有实例执行日志切换&#xff0c; 所以在RAC环境上大多时间一般使用后者&#xff0c;而今天遇到了不管执行多少次ALTER SYSTEM…

【C++】【六】约瑟夫问题

核心代码&#xff1a; int index 1;clinknode* pcur list->head.next;while (Size_circlelinkist(list)>1){if (index N) {mynum* temnum (mynum*)pcur;printf("%d ", temnum->val);clinknode* pnext pcur->next;RemoveByValue_circlelinkist(list…

第六章:内核数据结构

6.1链表链表表示一种存放和操作的可变数据元素的数据结构。链表与静态数组不同的是它包含的元素是动态创建并且插入链表的&#xff0c;在编译时不必知道具体需要多少个元素。另外链表中每个元素的创建时间各不相同&#xff0c;所以它们在内存中无需占用连续的空间。链表中每个元…

【C++】【七】栈的实现

栈的线性表实现 stack_liner_stack.h #ifndef STACK_LINER_H #define STACK_LINER_H #include <stdlib.h> #define MAX_SIZE 1024 #define stack_liner_false 0 #define stack_liner_true 1typedef struct STACK_LINER_H {void* data[MAX_SIZE];int size; }stack_liner…

推荐两款简单好用的图片放大jquery插件

一、zoomfiy.js 推荐可以从这里下载 使用说明&#xff1a; 使用该jquery 插件引入该插件的js:zoomfiy.js 或 min引入该插件的css:zoomfiy.css 或 min前后顺序都可js里加入 调用插件的函数 $(这里写要放大的图片).zoomify();如果有ajax 新生成的图片&#xff0c;要在ajax里再次调…

对图像的缩放与旋转

#include "opencv2/imgproc/imgproc.hpp" #include "opencv2/highgui/highgui.hpp" int main( ) {// 读取图像cv::Mat srcImage cv::imread("..\\images\\flower3.jpg");// 图像读取是否成功if( !srcImage.data ) return 1; // 对图像的缩放与旋…

工具库 --- Validator (JS正则)

工具库 --- Validator 今天写的是一个正则验证类 单例模式 工具库地址&#xff1a;github.com/WeForStudy/… npm地址&#xff1a;www.npmjs.com/package/slm… 单例模式 减少不必要的对象生存&#xff0c;减少资源的占用 由于只需要new一次&#xff0c;项目中其他项目共用一个…

【C++】【九】栈的应用

【C】【九】栈的应用 就近匹配原理及其步骤&#xff1a; 中缀转后缀&#xff1a;