Dream------Hadoop--FSDataInputStream和FSDataOutputStream

2023-11-01

一、FSDataInputStream
   FileSystem中的open()方法实际上返回的是一个FSDataInputStream,而不是标准的java.io类。这个类是java.io.DataInputStream
   的一个子类,支持随机访问,这样就可以从流的任何位置读取数据了
  public class FSDataInputStream extends DataInputStream
       implements Seekable, PositionedReadable,
       ByteBufferReadable, HasFileDescriptor, CanSetDropBehind, CanSetReadahead,
       HasEnhancedByteBufferAccess {。。。。。}
  
   Seekable接口允许在文件中定位,并提供一个查询方法,用于查询当前位置相对于文件开始处的偏移量(getpos())
   public interfence Seekable{
   void seek(long pos) throws IOException;
    long getPos() throws IOException;
    boolean seekToNewSource(long targetPos) throws IOException;
   }
   调用seek() 来定位大于文件长度的位置会导致IOException异常。与java.io.InputStream 中的skip() 不同,seek()并
  没有指出数据流当前位置之后的一点,它可以移到文件中任意一个绝对位置。
  应用程序开发人员并不常用seekToNewSource()方法。此方法一般倾向于切换到数据的另一个副本并在新的副本中寻找targetPos指定的位置。
  HDFS内部就采用这样的方法在数据节点故障时为客户端提供可靠的数据输入流。
   
  FSDataInputStream也实现了PositionedReadable接口,从一个指定位置读取一部分数据
 
 
二、FSDataOutputStream
Hadoop 的FileSystem中的create()方法返回了一个FSDataOutputStream,与FSDataInputStream类似,
它也有一个查询文件当前位置的方法:
public class FSDataOutputStream extends DataOutputStream
    implements Syncable, CanSetDropBehind {
............
...........
 public long getPos() throws IOException {
      return position;                            // return cached position
    }
 
}
 
 
但是,与FSDataInputStream不同,FSDataOutputStream不允许定位。这是因为HDFS只允许对一个打开的文件
顺序写入,或向一个已有文件添加。换句话说,它不支持文件尾部的其他位置的写入,这样一来,写入时的定位就没有什么意义。
 -------------------引自Hadoop权威指南第三版

转载于:https://www.cnblogs.com/wangliansong/p/4758256.html

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

Dream------Hadoop--FSDataInputStream和FSDataOutputStream 的相关文章

随机推荐

  • MATLAB关掉ColorBar的刻度线

    MATLAB使用colorbar显示时默认会带有刻度线 文章里的图一般是没有刻度线的 可以用下面命令关掉刻度线 colorbar Ticks
  • HAL读写FLASH笔记

    HAL读写FLASH笔记 目录 HAL读写FLASH笔记 1 整理数据 2 解锁 3 擦除扇区 4 写入数据 5 上锁 代码整理 写函数 读函数 注意 效果截图 1 整理数据 FLASH写入函数HAL FLASH Program可以写入16
  • Python——输入一个三位数,求每一位相加的和

    题目 输入一个三位整数 求每一位相加的和 例 输入123 输出 1 2 3 6 代码 x eval input 输入一个三位数 hundred x 100 decade x 10 10 digit x 10 sum hundred deca
  • K8s YAML文件中command 执行多条命令

    且在describe和kubelet日志中没有明确记录原因 基本都是因为command命令不合法导致 如需要运行多条命令 使用 不要使用 如下示例 command bin sh args c usr local bin redis star
  • RISC-V IDE MRS使用笔记(八):实现局域网下的远程调试功能

    RISC V IDE MRS使用笔记 八 实现局域网下的远程调试功能 1 原理介绍 MRS调试时上位机与硬件的通信基于gdb客户端与服务端的连接 调试时 首先启动openocd以挂载gdbserver的服务到指定端口上 通信建立后 监听到界
  • wireshark提取视频数据之RTP包中提取H264和H265

    wireshark提取视频数据之RTP包中提取H264和H265 文章目录 wireshark提取视频数据之RTP包中提取H264和H265 1 背景 2 提取前工作 3 H264视频从RTP包中提取步骤 4 H265视频从RTP包中提取步
  • java基础——随笔01

    数组实例 package org example common public class ZongJie 数组作为函数参数 public static void printArray int array System out println
  • 测试大佬评定的7个等级,只有1%的人达到第7层,看看你再几层?

    有人说 软件测试就是最low的点点点工作 有人说 测试工作职位薪水到一定程度只能原地踏步无法提升 也有人说 测试行业相对于开发来说技术性很低 容易被取代 这其实是对测试行业最大的误解 测试可深可浅 可窄可广 牛叉的测试很少 很多对测试侃侃而
  • AD之PCB快速选中所有元器件并锁定

    用AD设计PCB时 想锁定所有元器件 以免调整位号时 不小心移动元件 方法 1 选中所有元器件 任选中一个元件 点 右键 选 查找相似对象 2 Object Kind 一定时 Component 元件 若不是 说明没选好 重选 然后点 确定
  • Day23-Model操作,Form操作和序列化操作

    1 搭建环境请参考 http www cnblogs com momo8238 p 7508677 html 二 Form操作 一般会创建forms py文件 单独存放form模块 Form 专门做数据验证 而且非常强大 有以下两个插件 1
  • nodejs通过request请求远程url的文件并下载到本地

    需要循环去下载远程文件 然后自己写了一个demo 可以直接运行 如下 文件下载var fs require fs var path require path var request require request 创建文件夹目录var di
  • cuda 9.1 linux 安装教程,Ubuntu 16.04安装NVIDIA的显卡驱动396和CUDA9.1

    Ubuntu安装NVIDIA的显卡驱动和CUDA Toolkit Ubuntu 这里是用16 04LTS桌面版 如果是17 04及以后版本 因为使用的显示服务器不同 可能又会有所不同 安装NVIDIA的显卡驱动经常出现启动后死循环进不去系统
  • linux——open函数

    1 使用open 函数调用 需要注意头文件
  • pbft为什么需要2f+1

    将阵营分为两拨 好节点阵营 坏节点阵营 现在坏节点阵营想要误导好节点 让其误以为已经有足够人数发出了投票 并且发生分歧 如何做 假设最极端情况 好节点被等分为两拨A B 坏节点加上任意一个阵营的人数都能达到足够人数达成投票 那坏节点就可以发
  • 法律逻辑学

    法律与逻辑的关系 1 法学离不开逻辑 逻辑是法学的基础 无论立法 司法 法治的实现 还是法学研究 法律教学都离不开逻辑 理性思维与非理性思维的最根本区别是思维是否具有逻辑性 思维逻辑性 就是思维活动遵循逻辑规律 正确地运用概念 恰当地做出判
  • linux echo

    linux echo功能说明 显示文字 语 法 echo ne 字符串 或 echo help version 补充说明 echo会将输入的字符串送往标准输出 输出的字符串间以空白字符隔开 并在最后加上换行号 参 数 n 不要在最后自动换行
  • 微信小程序自定义车牌输入组件(结合Weui)

    文章目录 概要 描述 效果 组件代码 引入 概要 我们都知道车牌是有一定规律的 本文实现了微信小程序中实现车牌输入功能 具有一定的参考价值 感兴趣的小伙伴们可以参考一下 描述 近期做了一个和车有关的小程序项目 有车肯定就有车牌 我们都知道车
  • 痞子衡嵌入式:盘点国内车规级MCU厂商

    大家好 我是痞子衡 是正经搞技术的痞子 今天痞子衡给大家介绍的是国内车规级MCU厂商及其产品 在汽车电子领域 MCU的应用非常广泛 大到车身控制与动力总成 小到雨刷车窗等控制单元 都离不开MCU的身影 但汽车领域产品必须要是高可靠 高安全的
  • L1-058 6翻了 (15 分)

    6翻了 思维错误原因以及正确思路的来源 确实是一趟循环遍历下来 但是对于 6 们的处理不太到位 单纯的用一次的if else 只是单纯的对字符串中每一个字符做处理 而我们这里需要统计连在一起的 6 们的个数 以及将他们整体替换掉 也就是说此
  • Dream------Hadoop--FSDataInputStream和FSDataOutputStream

    一 FSDataInputStream FileSystem中的open 方法实际上返回的是一个FSDataInputStream 而不是标准的java io类 这个类是java io DataInputStream 的一个子类 支持随机访