hdfsClient_java对hdfs进行上传、下载、删除、移动、打印文件信息尚硅谷大海哥

本文主要是介绍hdfsClient_java对hdfs进行上传、下载、删除、移动、打印文件信息尚硅谷大海哥,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Java可以通过Hadoop提供的HDFS Java API来控制HDFS。通过HDFS Java API,可以实现对HDFS的文件操作,包括文件的创建、读取、写入、删除等操作。

具体来说,Java可以通过HDFS Java API来创建一个HDFS文件系统对象,然后使用该对象来进行文件的操作。例如,可以使用FileSystem类的create()方法来创建一个新的文件,使用open()方法来打开一个文件进行读取,使用write()方法来向文件中写入数据,使用delete()方法来删除一个文件等。

此外,Java还可以通过HDFS Java API来管理HDFS的元数据信息,包括文件的权限、所有者、修改时间等信息。通过FileSystem类的setPermission()、setOwner()、setTimes()等方法,可以对文件的元数据信息进行修改。

前提:
配置HADOOP_HOME环境变量

配置Path环境变量

Maven依赖成功导入

(这三个不会的评论区评论我发资料给你)

代码:

package com.huangyongsheng.hdfs;
import java.io.IOException;
import java.io.InputStream;
import java.net.URI;
import java.net.URISyntaxException;
import org.apache.hadoop.conf.Configuration;
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.apache.hadoop.io.IOUtils;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;/*** 客户端代码常用套路* 1,获取客户端对象* 2.执行操作* 3.关闭资源* HDFS zookeeper*/
public class HdfsClient {private FileSystem fs;@Beforepublic void init() throws URISyntaxException, IOException, InterruptedException {URI uri = new URI("hdfs://hadoop102:8020");Configuration configuration = new Configuration();String user="huangyongsheng";fs = FileSystem.get(uri, configuration, user);}@Afterpublic void close() throws IOException {fs.close();}@Test//创建目录public void testmkdir() throws URISyntaxException, IOException, InterruptedException {fs.mkdirs(new Path("/xiyuo/huaguoshan2"));System.out.println("目录创建成功");}@Test//上传;是否删除原数据;是否覆盖;原数据路径;目的路径public void testPut() throws IOException {fs.copyFromLocalFile(false,false,new Path("D:\\sun_wu_kong.txt"),new Path("/xiyuo/huaguoshan"));}@Test//下载;是否删除原数据;hdfs文件路径;win路径;是否校验(不用)public void  testGet() throws IOException {
//        fs.copyToLocalFile(false,new Path(""),new Path(""));InputStream in =fs.open(new Path("/dancijishu/wcinput/word1.txt"));IOUtils.copyBytes(in,System.out,4096,false);IOUtils.closeStream(in);}@Test//删除;删除文件,目录,非空目录(需要参数true)是否递归删除public void testRm() throws IOException {fs.delete(new Path(""),false);}@Test//文件的更名和移动public void testmv() throws IOException {fs.rename(new Path("/xiyuo/huaguoshan2"),new Path("/xiyuo/huaguoshan_namechanged"));// rename可以移动文件并改名      原文件路径(路径里的文件)                   一个新的路径(路径里的文件)}@Test//获取文件详情public void fileDetail() throws IOException {//获取所有文件信息                  迭代器RemoteIterator<LocatedFileStatus> listFiles = fs.listFiles(new Path("/"),true);while (listFiles.hasNext()){LocatedFileStatus fileStatus = listFiles.next();System.out.println("===================="+fileStatus.getPath()+"====================");System.out.println(fileStatus.getPermission());System.out.println(fileStatus.getOwner());System.out.println(fileStatus.getGroup());System.out.println(fileStatus.getLen());System.out.println(fileStatus.getModificationTime());System.out.println(fileStatus.getReplication());System.out.println(fileStatus.getPath().getName());}}
}

这篇关于hdfsClient_java对hdfs进行上传、下载、删除、移动、打印文件信息尚硅谷大海哥的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/401202

相关文章

JVM 的类初始化机制

前言 当你在 Java 程序中new对象时,有没有考虑过 JVM 是如何把静态的字节码(byte code)转化为运行时对象的呢,这个问题看似简单,但清楚的同学相信也不会太多,这篇文章首先介绍 JVM 类初始化的机制,然后给出几个易出错的实例来分析,帮助大家更好理解这个知识点。 JVM 将字节码转化为运行时对象分为三个阶段,分别是:loading 、Linking、initialization

Spring Security 基于表达式的权限控制

前言 spring security 3.0已经可以使用spring el表达式来控制授权,允许在表达式中使用复杂的布尔逻辑来控制访问的权限。 常见的表达式 Spring Security可用表达式对象的基类是SecurityExpressionRoot。 表达式描述hasRole([role])用户拥有制定的角色时返回true (Spring security默认会带有ROLE_前缀),去

浅析Spring Security认证过程

类图 为了方便理解Spring Security认证流程,特意画了如下的类图,包含相关的核心认证类 概述 核心验证器 AuthenticationManager 该对象提供了认证方法的入口,接收一个Authentiaton对象作为参数; public interface AuthenticationManager {Authentication authenticate(Authenti

Spring Security--Architecture Overview

1 核心组件 这一节主要介绍一些在Spring Security中常见且核心的Java类,它们之间的依赖,构建起了整个框架。想要理解整个架构,最起码得对这些类眼熟。 1.1 SecurityContextHolder SecurityContextHolder用于存储安全上下文(security context)的信息。当前操作的用户是谁,该用户是否已经被认证,他拥有哪些角色权限…这些都被保

Spring Security基于数据库验证流程详解

Spring Security 校验流程图 相关解释说明(认真看哦) AbstractAuthenticationProcessingFilter 抽象类 /*** 调用 #requiresAuthentication(HttpServletRequest, HttpServletResponse) 决定是否需要进行验证操作。* 如果需要验证,则会调用 #attemptAuthentica

Spring Security 从入门到进阶系列教程

Spring Security 入门系列 《保护 Web 应用的安全》 《Spring-Security-入门(一):登录与退出》 《Spring-Security-入门(二):基于数据库验证》 《Spring-Security-入门(三):密码加密》 《Spring-Security-入门(四):自定义-Filter》 《Spring-Security-入门(五):在 Sprin

Java架构师知识体认识

源码分析 常用设计模式 Proxy代理模式Factory工厂模式Singleton单例模式Delegate委派模式Strategy策略模式Prototype原型模式Template模板模式 Spring5 beans 接口实例化代理Bean操作 Context Ioc容器设计原理及高级特性Aop设计原理Factorybean与Beanfactory Transaction 声明式事物

HDFS—存储优化(纠删码)

纠删码原理 HDFS 默认情况下,一个文件有3个副本,这样提高了数据的可靠性,但也带来了2倍的冗余开销。 Hadoop3.x 引入了纠删码,采用计算的方式,可以节省约50%左右的存储空间。 此种方式节约了空间,但是会增加 cpu 的计算。 纠删码策略是给具体一个路径设置。所有往此路径下存储的文件,都会执行此策略。 默认只开启对 RS-6-3-1024k

HDFS—集群扩容及缩容

白名单:表示在白名单的主机IP地址可以,用来存储数据。 配置白名单步骤如下: 1)在NameNode节点的/opt/module/hadoop-3.1.4/etc/hadoop目录下分别创建whitelist 和blacklist文件 (1)创建白名单 [lytfly@hadoop102 hadoop]$ vim whitelist 在whitelist中添加如下主机名称,假如集群正常工作的节

Java进阶13讲__第12讲_1/2

多线程、线程池 1.  线程概念 1.1  什么是线程 1.2  线程的好处 2.   创建线程的三种方式 注意事项 2.1  继承Thread类 2.1.1 认识  2.1.2  编码实现  package cn.hdc.oop10.Thread;import org.slf4j.Logger;import org.slf4j.LoggerFactory