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)删除。
用户投稿
上一篇 2022年6月16日 12:03
下一篇 2022年6月16日 12:04

相关推荐

  • 存储过程语法(sql server存储过程语法)

    今天小编给各位分享存储过程语法的知识,其中也会对sql server存储过程语法进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧! oracle存储过程基本语法…

    2022年11月26日
  • 计算机网络技术论文(计算机网络技术论文七千字)

    今天小编给各位分享计算机网络技术论文的知识,其中也会对计算机网络技术论文七千字进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧! 计算机网络方面的论文3000字…

    2022年11月26日
  • 科比19岁女儿遭自称与她生“科比式孩子”男子跟踪骚扰

    极目新闻记者王亮亮黄佳琪 据福克斯新闻网报道,当地时间11月21日,已故篮球巨星科比·布莱恩特的长女娜塔莉亚·布莱恩特21日向法院提交临时限制令,声称这位32岁的前科从十几岁起就骚…

    2022年11月24日
  • 锐龙97900x参数规格跑分评测 锐龙97900x属于什么档次

    锐龙9 7900X是锐龙7000系列处理器中性能顶尖的型号之一,它采用了这一代标配的zen4架构和5nm制程工艺,那么它具体的参数跑分如何,在电脑上世纪发挥怎么样呢,下面就来看看锐…

    2022年11月24日
  • 前三季度,市场规模超过五万亿元 信息消费展现蓬勃生机

    家居企业个性化全屋定制系统,备受消费者青睐;主打专业电竞的新款高性能便携式计算机,销量表现创新高;物流企业推出数智化供应链兴农服务项目,助力优质农产品出深山…… 不久前,工信部发布…

    2022年11月24日
  • 免费清理c盘的软件(清理c盘空间不影响系统)

    电脑用久了慢如龟速,还卡顿,这最大的原因啊就是C盘空间不足造成的。 即使电脑配置再好,或者硬盘再快,如果长时间没有打扫C盘,打开文件或者稳定之类的,都卡得让人头大。 这时候呢不要去…

    2022年11月24日
  • pdf虚拟打印机(添加pdf虚拟打印机)

    本文主要讲的是pdf虚拟打印机,以及和添加pdf虚拟打印机相关的知识,如果觉得本文对您有所帮助,不要忘了将本文分享给朋友。 pdf虚拟打印机具体是什么功能? 电脑虚拟打印机的功能有…

    2022年11月24日
  • vivox90pro配置参数跑分详情 vivox90pro是什么屏幕

    vivox90pro参数配置详情怎么样?vivo手机在昨晚举行了X90系列发布会,有普通款、pro款以及pro+款三个版本,那么vivox90pro具体配置怎么样呢?下面就让小编为…

    2022年11月23日
  • vivox90参数配置详情 vivox90处理器功耗跑分介绍

    vivox90参数配置详情怎么样?vivo手机在昨晚举行了X90系列发布会,有普通款、pro款以及pro+款三个版本,那么vivox90具体配置怎么样呢?下面就让小编为大家介绍一下…

    2022年11月23日
  • 微信健康码怎么注销重新申请健康码 怎么更换绑定人

    在疫情常态化的管理之下,出行都需要健康码,那么如果因为种种原因注销了健康码怎么办呢?这种情况下是否还可以再申请健康码呢?下面一起来看看了解一下吧! 微信健康码注销了还能申请吗 健康…

    2022年11月22日

联系我们

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