HDFS 的 API 操作

导入 Maven 依赖

<repositories><repository><id>cloudera</id><url>https://repository.cloudera.com/artifactory/cloudera-repos/</url></repository>
</repositories>
<dependencies><dependency><groupId>jdk.tools</groupId><artifactId>jdk.tools</artifactId><version>1.8</version><scope>system</scope><systemPath>${JAVA_HOME}/lib/tools.jar</systemPath></dependency><dependency><groupId>org.apache.hadoop</groupId><artifactId>hadoop-common</artifactId><version>3.0.0</version><scope>provided</scope></dependency><dependency><groupId>org.apache.hadoop</groupId><artifactId>hadoop-hdfs</artifactId><version>3.0.0</version></dependency><dependency><groupId>org.apache.hadoop</groupId><artifactId>hadoop-hdfs-client</artifactId><version>3.0.0</version><scope>provided</scope></dependency><dependency><groupId>org.apache.hadoop</groupId><artifactId>hadoop-client</artifactId><version>3.0.0</version></dependency><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version><scope>test</scope></dependency>
</dependencies>

概述

在 Java 中操作 HDFS, 主要涉及以下 Class:

  • Configuration

    • 该类的对象封转了客户端或者服务器的配置
  • FileSystem

    • 该类的对象是一个文件系统对象, 可以用该对象的一些方法来对文件进行操作, 通过 FileSystem 的静态方法 get 获得该对象

       
       
      FileSystem fs = FileSystem.get(conf)
      • get 方法从 conf 中的一个参数 fs.defaultFS 的配置值判断具体是什么类型的文件系统
      • 如果我们的代码中没有指定 fs.defaultFS, 并且工程 ClassPath 下也没有给定相应的配置, conf 中的默认值就来自于 Hadoop 的 Jar 包中的 core-default.xml
      • 默认值为 file:///, 则获取的不是一个 DistributedFileSystem 的实例, 而是一个本地文件系统的客户端对象

获取 FileSystem 的几种方式

第一种方式

@Test
public void getFileSystem() throws URISyntaxException, IOException {Configuration configuration = new Configuration();FileSystem fileSystem = FileSystem.get(new URI("hdfs://192.168.52.250:8020"), configuration);System.out.println(fileSystem.toString());
}

第二种方式

@Test
public void getFileSystem2() throws URISyntaxException, IOException {Configuration configuration = new Configuration();configuration.set("fs.defaultFS","hdfs://192.168.52.250:8020");FileSystem fileSystem = FileSystem.get(new URI("/"), configuration);System.out.println(fileSystem.toString());
}

第三种方式


@Test
public void getFileSystem3() throws URISyntaxException, IOException {Configuration configuration = new Configuration();FileSystem fileSystem = FileSystem.newInstance(new URI("hdfs://192.168.52.250:8020"),
configuration);System.out.println(fileSystem.toString());
}

第四种方式

@Test
public void getFileSystem4() throws  Exception{Configuration configuration = new Configuration();configuration.set("fs.defaultFS","hdfs://192.168.52.250:8020");FileSystem fileSystem = FileSystem.newInstance(configuration);System.out.println(fileSystem.toString());
}

HDFS的API操作-获取FileSystem方式相关推荐

  1. HDFS的API操作-获取文件列表信息

    遍历 HDFS 中所有文件 递归遍历 @Test public void listFile() throws Exception{FileSystem fileSystem = FileSystem. ...

  2. 2021年大数据Hadoop(十二):HDFS的API操作

    2021大数据领域优质创作博客,带你从入门到精通,该博客每天更新,逐渐完善大数据各个知识体系的文章,帮助大家更高效学习. 有对大数据感兴趣的可以关注微信公众号:三帮大数据 目录 HDFS的API操作 ...

  3. 实验二 HDFS的Shell命令操作,和HDFS的API操作

    文章目录 实验目的 一. 实验原理 二.实验准备 实验内容 步骤 项目1 HDFS常见命令练习 列出HDFS当前用户家目录下的文件及文件夹: 列出HDFS文件下名为directory的文件夹中的文件: ...

  4. HDFS Java API 操作

    文章目录 HDFS Java API操作 零.启动hadoop 一.HDFS常见类接口与方法 1.hdfs 常见类与接口 2.FileSystem 的常用方法 二.Java 创建Hadoop项目 1. ...

  5. HDFS java API操作

    HDFS的javaAPI操作 目标:掌握如何使用API对HDFS上的目录和数据进行增.删.改.查操作. 1.idea创建maven工程 2.修改pom.xml文件如下: (需要下载jar包,时间可能稍 ...

  6. 分布式文件系统—HDFS—Java API操作

    原文作者:jiangw-Tony 原文地址:HDFS基础使用 hdfs 在生产应用中主要是客户端的开发,其核心步骤是从 hdfs 提供的 api 中构造一个 HDFS的访问客户端对象,然后通过该客户端 ...

  7. HDFS的API操作

    准备工作:IDEA > HDFS客户端准备 目录 文件上传 文件下载 文件夹删除 修改文件名称 查看文件详情 文件和文件夹的判断 完整代码 文件上传 注意conf.set("dfs.r ...

  8. 大数据之-Hadoop之HDFS的API操作_文件上传---大数据之hadoop工作笔记0056

    然后我们HDFS的java的api操作. 比如我们有个需求从mysql中把数据上传到完全分布式的集群中的,hdfs中 比如这里首先我们演示,把e盘下的banzhang.txt文件上传到完全分布式集群h ...

  9. HDFS的API操作-小文件的合并

    小文件合并 由于 Hadoop 擅长存储大文件,因为大文件的元数据信息比较少,如果 Hadoop 集群当中有大量的小文件,那么每个小文件都需要维护一份元数据信息,会大大的增加集群管理元数据的内存压力, ...

最新文章

  1. JMS(二):简单的JMS入门实例
  2. php_sapi常量,PHP常量PHP_SAPI与函数php_sapi_name()简介,PHP运行环境检测
  3. 套接字设置为(非)阻塞模式
  4. 1006 换个格式输出整数 (15 分)
  5. Android学习之布局管理器嵌套
  6. linux网卡备份还原,CentOS6.x双网卡采用主-备份策略绑定(bond)
  7. 2017乌鲁木齐ICPC: I. A Possible Tree(带权并查集)
  8. Java7 一些新特性及脚本语言支持API--笔记
  9. 专注于分享,米狗网!
  10. 有关Oracle cvu和cvuqdisk
  11. 自己动手搭建免费VoIP服务器
  12. Netmeeting使用方法
  13. Android WideVine
  14. 自然语言处理技术的工作原理与应用
  15. 关于php的梗儿_抖音上的梗,你知道哪些?
  16. 基于单片机的超市储物柜设计_基于单片机的超市储物柜控制系统设计.docx
  17. 微信小程序微信原生小程序如何通过后端返回的二进制流导出excel文件并保存和转发
  18. git 国外镜像下载慢的解决方案
  19. 献给初学者的Java学习方法完整版(附教程)
  20. 申报职称要满足的条件

热门文章

  1. Referenced file contains errors (http://www.springframework.org/schema/beans/spring-beans-4.3.xsd).
  2. 算法竞赛入门经典_6数据结构基础
  3. servlet web.xml学习笔记
  4. PHPSTORM下安装XDEBUG
  5. Linux System Account SSH Weak Password Detection Automatic By System API
  6. GCJ 2015-Qualification-B Infinite House of Pancakes 枚举,思路,误区 难度:3
  7. 注释 —— 《clean code》读后感
  8. 【log4j】—日志记录log4j的Logger和commons.logging的Log的区别
  9. 20 个有用的 Go 语言微服务开发框架
  10. 2.27linux和windows互传文件