HDFS_CRUD

package com.hdfsdemo;

import java.io.FileNotFoundException;

import java.io.IOException;

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.LocatedFileStatus;

import org.apache.hadoop.fs.Path;

import org.apache.hadoop.fs.RemoteIterator;

import org.junit.Before;

import org.junit.Test;

public class HDFS_CRUD {

FileSystem fs = null;

@Before

public void init() throws Exception {

// 构造一个配置参数对象,设置一个参数:我们要访问的hdfs的URI

Configuration conf = new Configuration();

// 这里指定使用的是HDFS文件系统

conf.set(“fs.defaultFS”, “hdfs://hadoop01:9000”);

// 通过如下的方式进行客户端身份的设置

System.setProperty(“HADOOP_USER_NAME”, “root”);

// 通过FileSystem的静态方法获取文件系统客户端对象

fs = FileSystem.get(conf);

}

@Test

public void testAddFileToHdfs() throws IOException {

// 要上传的文件所在本地路径

Path src = new Path(“D:/test.txt”);

// 要上传到hdfs的目标路径

Path dst = new Path(“/testFile”);

// 上传文件方法

fs.copyFromLocalFile(src, dst);

// 关闭资源

fs.close();

}

// 从hdfs中复制文件到本地文件系统

@Test

public void testDownloadFileToLocal() throws IllegalArgumentException, IOException {

// 下载文件

fs.copyToLocalFile(new Path(“/testFile”), new Path(“D:/”));

}

// 创建,删除,重命名文件

@Test

public void testMkdirAndDeleteAndRename() throws Exception {

// 创建目录

fs.mkdirs(new Path(“/a/b/c”));

fs.mkdirs(new Path(“/a2/b2/c2”));

// 重命名文件或文件夹

fs.rename(new Path(“/a”), new Path(“/a3”));

// 删除文件夹,如果是非空文件夹,参数2必须给值true

fs.delete(new Path(“/a2”), true);

}

// 查看目录信息,只显示文件

@Test

public void testListFiles() throws FileNotFoundException, IllegalArgumentException, IOException {

// 获取迭代器对象

RemoteIterator listFiles = fs.listFiles(new Path(“/”), true);

while (listFiles.hasNext()) {

LocatedFileStatus fileStatus = listFiles.next();

// 打印当前文件名

System.out.println(fileStatus.getPath().getName());

// 打印当前文件块大小

System.out.println(fileStatus.getBlockSize());

// 打印当前文件权限

System.out.println(fileStatus.getPermission());

// 打印当前文件内容长度

System.out.println(fileStatus.getLen());

// 获取该文件块信息(包含长度,数据块,datanode的信息)

BlockLocation[] blockLocations = fileStatus.getBlockLocations();

for (BlockLocation bl : blockLocations) {

System.out.println(“block-length:” + bl.getLength() + “–” + “block-offset:” + bl.getOffset());

String[] hosts = bl.getHosts();

for (String host : hosts) {

System.out.println(host);

}

}

System.out.println(“—————————-“);

}

}

// 查看文件及文件夹信息

@Test

public void testListAll() throws FileNotFoundException, IllegalArgumentException, IOException {

// 获取HDFS系统中文件和目录的元数据等信息

FileStatus[] listStatus = fs.listStatus(new Path(“/”));

String flag = “d– “;

for (FileStatus fstatus : listStatus) {

// 判断是文件还是文件夹

if (fstatus.isFile())

flag = “f– “;

System.out.println(flag + fstatus.getPath().getName());

}

}

}

郑重声明:本文内容及图片均整理自互联网,不代表本站立场,版权归原作者所有,如有侵权请联系管理员(admin#wlmqw.com)删除。
(0)
用户投稿
上一篇 2022年6月16日
下一篇 2022年6月16日

相关推荐

  • Win11 安卓子系统 (Android 12L) 下载

    从 Win11 发布以来不少小伙伴都在关注安卓系统功能,目前还有不少用户在问新版的 Win11 支持安卓功能了没有?其实早就发布了,因为安卓子系统是作为一个组件功能,没有直接内置在…

    2022年6月21日
  • 摩托罗拉 razr 2022已上架,发布会当天启动销售

    此前,摩托罗拉为即将到来的moto新品发布会进行了官方预热。现在,更多的相关信息也出现在了爆料和官方剧透中。 今天,联想中国区手机业务部总经理陈劲在最新的预热中,再次提到了新品发布…

    2022年8月7日
  • Spring Boot 业务逻辑层

    关于业务逻辑层(Service层) 业务逻辑层是被Controller直接调用的层(Controller不允许直接调用持久层),通常,在业务逻辑层中编写的代码是为了保证数据的完整性…

    2022年6月13日
  • 临川记忆-旧梦难寻

    临川南部乡镇,有一个村坊在连城和凤岗之间。这两个乡镇,都是大部分接壤,可是这两地交流估计绝不是全民来往,而是亲戚串门式,随着历史交流,二者联系更加紧密,彼此之间协作也变得更加亲密。…

    2022年8月14日
  • 中汽协:7月新能源汽车产销同比均增长1.2倍

    中新网8月11日电 据“中汽协会数据”微信公众号11日信息,7月,新能源汽车产销分别完成61.7万辆和59.3万辆,同比均增长1.2倍。其中纯电动汽车产销分别完成47.2万辆和45…

    2022年8月17日
  • 国家网信办发布新规 严格互联网用户账号信息管理

    国家互联网信息办公室近日发布《互联网用户账号信息管理规定》,将于2022年8月1日起施行。规定明确账号信息管理的规范,要求互联网信息服务提供者履行账号信息管理主体责任,建立健全并严…

    2022年7月15日
  • 苹果14pro屏幕得分出炉 看视频或玩游戏几乎不掉帧

    近日,知名评测机构DXOMARK披露了iPhone 14 Pro的屏幕得分,该机以总分149分在DXOMARK手机屏幕排行榜中,位居第一。 细节方面,DXOMARK表示,iPhon…

    2022年10月24日
  • 开源框架-世界上最快的开源的基于GO语言的静态站点生成器

    Hugo 是一个用Go编写的静态 HTML 和 CSS 网站生成器。它针对速度、易用性和可配置性进行了优化。Hugo 获取一个包含内容和模板的目录,并将它们呈现为一个完整的 HTM…

    2022年6月14日
  • 聚力科技创新 引领数智发展-中国移动发布2021年可持续发展报告

    6月16日,中国移动发布2021年可持续发展报告,这是中国移动连续16年发布可持续发展报告。报告以“聚力科技创新,引领数智发展”为主题,围绕“至诚尽性,成己达人”的履责理念,通过“…

    2022年6月19日
  • 电信老号段有哪些?哪种最值钱?

    随着手机的不断普及,三大运营商也是逐步推出了越来越多的手机号码号段,号段越出越多许多小伙伴们对于运营商都有哪些号段表示疑惑,也不知道最值钱的号段是哪个?今天小编就来给大家介绍一下电…

    2022年6月19日

联系我们

联系邮箱:admin#wlmqw.com
工作时间:周一至周五,10:30-18:30,节假日休息