hadoop API 学习小结(一)

2023-05-16

一、从Hadoop URL 中读取数据

使用java.net.URL对象打开一个数据流

InputStream in = new URL("hdfs://host/path").openStream();


二、FileSystem 对象

取得FileSystem实例有两种静态方法:

(1)public static FileSystem get(Configuration conf)

//Configuration对象封装了一个客户端或服务器的配置,这是用类路径读取而来的

//返回默认文件系统(在conf/core-site.xml中设置,如果没有设置过,则是默认的本地文件系统)


(2)public static FileSystem get (URI uri,Configuration conf)

//参数URI指定URI方案及决定所用文件系统的权限,如果没有指定方案,则退回默认的文件系统


三、open()方法

public FSDataInputStream open(path f)

//该方法默认使用4kb的缓冲大小


public abstract FSDataInputStream open(Path f, int bufferSize)

//第二个参数指定缓冲大小

//open方法实际返回的是一个FSDataInputStream,这个类是java.io.DataInputStream的一个子类,支持随机访问,能从流中任意位置对其数据。


四、FSDataInputStream类实现了Seekable接口

Seekable接口允许在文件中定位seek()方法,提供一个查询方法,用于查询当前位置相对于文件开始处的偏移量getPos()。

seekToNewSource(long targetPos)在应用程序中并不常用,此方法用来切换到数据的另一个副本并在新的副本中找寻targetPos指定的位置。HDFS内部就采用这样的方法在数据节点故障时为客户端提供可靠的数据输入流。


五、FSDataInputStream类实现了PositionedReadable接口

public int read(long position,byte[] buffer,int offset,int length)

//read()方法指定position读取指定长度的字节放入缓冲区buffer的指定偏移量offset,返回值是读到的字节数。


public int readFully(long position,byte[] buffer,int offset,int length)

//该方法读出字节length指定的数据到buffer。


public int readFully(long position,byte[] buffer)

//只接受buffer字节数组的版本中,再读取buffer.length字节。


所有这些方法会保留文件当前位置并且是线程安全的,因此它们提供了在读取文件(可能是元数据)的主要部分时访问其他部分的便利方法。

注意,seek()是相对高开销的操作,需要慎重使用。


六、创建文件的方法

(1)public FSDataOutputStream create(Path f)

//该方法如果没有文件,就会自动创建文件路径,所以最好用exists()检查父目录是否存在。


hadoop.util中有个Progressable的接口中,有个progress()方法,可以被告知数据写入数据节点的进度。


public FSDataOutputStream append(Path f)

//该append()方法允许一个写入者打开已有文件并在其末尾写入数据。HDFS支持,但S3不支持。


七、创建目录

public boolean mkdirs(Path f)


八、文件元数据:Filestatus

(1)FileStatus类封装了文件系统镇南关文件的目录和元数据,包括文件长度、块大小、副本、修改时间、所有者以及许可信息。

(2)getFileStatus()提供了一个获取一个文件或目录的状态对象的方法。大家可以通过看源代码看看它的信息参数。

(3)listSatus()能够列出目录的内容。

(4)globStatus(Path pathPattern,PathFilter filter)使用通配符在一个表达式中核对多个文件。

(5)PathFilter对象 ,通配格式不是总能描述我们想要访问的文件集合。listStatus()和globStatus()方法提供了可选PathFilter对象,使我们可以通过编程方式控制匹配。

(6)delete(Path f,boolean recursive)永久性删除文件或目录。


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

hadoop API 学习小结(一) 的相关文章

随机推荐

  • 虚拟机中VMware USB Arbitration Service问题的解决办法

    VMware Workstation在安装系统时 xff0c 出现 The connection to the VMware USB Arbitration Service was unsuccessful Please check the
  • 面向对象的4个基本特征

    面向对象的4个基本特征 在上述面向对象的基本概念基础之上 xff0c 不可避免地要涉及到面向对象程序设计所具有的4个共同特征 xff1a 抽象性 封装性 继承性和多态性 1 xff0e 抽象 抽象是人们认识事物的常用方法 xff0c 比如地
  • HDOJ/HDU 1085 母函数 Holding Bin-Laden Captive!

    Holding Bin Laden Captive Time Limit 2000 1000 MS Java Others Memory Limit 65536 32768 K Java Others Total Submission s
  • ISO 9126软件质量模型(软件质量模型的6大特性和27个子特性)

    ISO 9126质量模型 xff1a 软件质量模型的6大特性和27个子特性 ISO9126 软件质量模型是评价软件质量的国际标准 xff0c 由 6 个特性和 27 个子 特性组成 xff0c 建议大家深入理解各特性 子特性的含义和区别 x
  • 北戴河游记

    最近 xff0c 公司年度旅游 我所在的Team去了北戴河 北戴河 海滨地处河北省秦皇岛市中心的西部 是秦皇岛的城市区之一 xff01 受海洋气候的影响 xff0c 夏无酷暑 xff0c 冬无严寒 xff0c 常年保持一级大气质量 xff0
  • 云计算|OpenStack|社区版OpenStack---基本概念科普(kvm的驱动类别和安装)

    前言 xff1a 云计算里基本都是基于kvm技术作为底层支撑 xff0c 但 xff0c 该技术是比较复杂的 xff0c 首先 xff0c 需要硬件的 支撑 xff0c 表现在物理机上 xff0c 就是需要在BIOS中调整设置虚拟化功能 x
  • Pascal's Triangle -- LeetCode

    原题链接 http oj leetcode com problems pascals triangle 这道题比较简单 xff0c 属于基础的数组操作 基本思路是每层保存前一行的指针 xff0c 然后当前航数据根据上一行来得到 xff0c
  • 【转】windows下通过Xmanager远程桌面访问Ubuntu

    原文 xff1a url http ubuntuguide net enable xdmcp remote login in ubuntu 12 04 lts lightdm url This is simple guide about e
  • VNC许可密钥

    今天用电脑远程VNC连接BT机 xff0c 结果告诉我连不上 xff0c 错误忘记了 xff0c 需要我去购买一个VNC密钥 天朝的我怒了 xff0c 找了半天 xff0c 上网搜到一个有效密钥 xff0c 然后去VNC Server端输入
  • [C80]橙汁同人游戏 Acceleration of SUGURI 2 汉化补丁

    游戏 名称 xff1a 橙汁同人游戏 英文 名称 xff1a Acceleration of SUGURI 2 游戏类型 xff1a 格斗类 FTG 游戏 游戏制作 xff1a 橙汁 游戏发行 xff1a 橙汁 游戏平台 xff1a PC
  • 在LINUX中用cal命令解了一段人类文明历史 1752年 - 九月

    以前听人说在Linux上能够查到一个很奇怪的月份 xff0c 只是当时忘了那个特别的月份 今天在网上搜了一下 xff0c 发现通过这个命令 xff08 月份 xff09 了解了一段人类文明历史 cal 9 1752 九月 1752 一 二
  • 单点登录 - CAS【六】renew、gateway

    一 Renew Opting out of SSO 看下官方网站上的描述 There is a feature of the CAS protocol that allows clients to opt out of single sig
  • svn st 信息说明

    摘自 xff1a http hhhk iteye com blog 1473449 未指定参数时 xff0c 只显示本地修改的条目 没有网络访问 使用 q 时 xff0c 只显示本地修改条目的摘要信息 使用 u 时 xff0c 增加工作版本
  • 64位linux系统编译hadoop源码 native库

    下面是自己编译hadoop源码 xff0c 然后将native库上传覆盖hadoop的过程 0 hadoop native库 在hadoop压缩时 调用此库文件的jni so 来调用linux系统的功能 一般我们的linux机器都是64位
  • 移植boa出现的错误及解决方法

    移植boa的一大把 xff0c 我就不罗嗦了 xff0c 这个就挺好 xff1a 实际上boa太老了 xff0c 据说要用2 95 3的才好用 xff0c 但现在编译器都不断更新 xff0c 就是boa断货 xff0c 他不更新 xff0c
  • java获取对象属性类型、属性名称、属性值

    因为项目需要用到 xff0c 于是简单封装了一些常用的操作 xff1a 根据属性名获取属性值 private Object getFieldValueByName String fieldName Object o try String f
  • 云计算|OpenStack|使用VMware安装华为云的R006版CNA和VRM

    前言 xff1a FusionCompute架构 CNA VRM CNA ComputingNode Agent 计算节点代理VNA虚拟节点代理 xff0c 部署在CNA上 xff0c 实施计算 存储 网络的虚拟化的配置管理 VRM Vir
  • centos 配置java环境

    一 下载jdk jdk下载地址 xff1a http www oracle com technetwork java javase downloads jdk8 downloads 2133151 html 下载jdk 8u152 linu
  • HBase之Java API

    1 Configuration 在使用Java API时 xff0c Client端需要知道HBase的配置环境 xff0c 如存储地址 xff0c zookeeper等信息 这些信息通过Configuration对象来封装 xff0c 可
  • hadoop API 学习小结(一)

    一 从Hadoop URL 中读取数据 使用java net URL对象打开一个数据流 InputStream in 61 new URL 34 hdfs host path 34 openStream 二 FileSystem 对象 取得