hive文件存储格式:SequenceFile系统总结

2023-11-07

问题导读

1.什么是SequenceFile?
2.如何 通过 源
码实现SequenceFile压缩?
3.SequenceFile格式压缩有什么优点和缺点?




1.SequenceFile是什么

1.1 SequenceFile概述

1.1.sequenceFile文件是Hadoop用来存储二进制形式的<Key,Value>对而设计的一种平面文件(Flat File)。

1.2.可以把SequenceFile当做是一个容器,把所有的文件打包到SequenceFile类中可以高效的对小文件进行存储和处理。

1.3.SequenceFile文件并不按照其存储的Key进行排序存储,SequenceFile的内部类Writer提供了append功能。

1.4.SequenceFile中的Key和Value可以是任意类型Writable或者是自定义Writable。

1.5.在存储结构上,SequenceFile主要由一个Header后跟多条Record组成,Header主要包含了Key  classname,value classname,存储压缩算法,用户自定义元数据等信息,此外,还包含了一些同步标识,用于快速定位到记录的边界。每条Record以键值对的方式进行存储,用来表示它的字符数组可以一次解析成:记录的长度、Key的长度、Key值和value值,并且Value值的结构取决于该记录是否被压缩。


1.2:SequenceFile支持数据压缩

2.1.SequenceFIle的内部格式取决于是否启用压缩,如果是压缩,则又可以分为记录压缩和块压缩。

2.2.有一下三种类型的压缩:

A.无压缩类型:如果没有启用压缩(默认设置)那么每个记录就由它的记录长度(字节数)、键的长度,键和值组成。长度字段为4字节。

B.记录压缩类型:记录压缩格式与无压缩格式基本相同,不同的是值字节是用定义在头部的编码器来压缩。注意:键是不压缩的。下图为记录压缩:

640?wx_fmt=png

C.块压缩类型:块压缩一次压缩多个记录,因此它比记录压缩更紧凑,而且一般优先选择。当记录的字节数达到最小大小,才会添加到块。该最小值由io.seqfile.compress.blocksize中的属性定义。默认值是1000000字节。格式为记录数、键长度、键、值长度、值。下图为块压缩:

640?wx_fmt=png



1.3:优缺点


   SequenceFile优点:
A.支持基于记录(Record)或块(Block)的数据压缩。

B.支持splitable,能够作为MapReduce的输入分片。

C.修改简单:主要负责修改相应的业务逻辑,而不用考虑具体的存储格式。

  SequenceFile的缺点
A.需要一个合并文件的过程,且合并后的文件不方便查看。


2.SequenceFile类解析

SequenceFile类位于org.apache.hadoop.io包内,类结构如下:

640?wx_fmt=png 




3.读写SequenceFile源码实例

写过程 
1、创建Configuration 
2、获取FileSystem 
3、创建文件输出路径Path 
4、调用SequenceFile.createWriter得到SequenceFile.Writer对象 
5、调用SequenceFile.Writer.append追加写入文件 
6、关闭流 3

例子如下:

转载于:https://my.oschina.net/sniperLi/blog/775112

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

hive文件存储格式:SequenceFile系统总结 的相关文章

随机推荐

  • Cpp学习——string(2)

    目录 编辑 容器string中的一些函数 1 capacity 2 reserve 3 resize 4 push back 与append 5 find系列函数 容器string中的一些函数 1 capacity capacity是str
  • git上传文件到github的操作流程

    git上传文件到github的操作流程 下载git之后 新建空白文件 右键找到git bash打开 如果电脑第一次安装 输入命令 git config global user name github上面的名称 git config glob
  • WPF 使用自定义控件(custom control),资源字典(ResourceDictionary),用户控件(user control),及之间的对比

    最近使用WPF比较多 过来记录一下 对比一下 个人理解usercontrol比较适用于组合控件 比如你想要实现的控件是由多个控件组成的 customCcontrol主要是用来单独重绘控件 如button datagrid lable等 cu
  • 牛客SQL进阶:【字符串的切割、截取、删除、替换】+【窗口函数】

    本文总结了牛客SQL刷题 非技术快速入门的进阶知识 阅读本文可以轻松解决这个系列下的难题 SQL30 统计每种性别的人数 SQL31 提取博客URL中的用户名 字符串拆分 有分隔符 字符串拆分 无分隔符 SQL32 截取出年龄 SQL33
  • vue3对echarts的二次封装之按需加载

    欢迎点击领取 前端面试题进阶指南 前端登顶之巅 最全面的前端知识点梳理总结 分享一个使用比较久的 效果展示 1 echarts是我们后台系统中最常用的数据统计图形展示 外界对它的二次封装也不计层数 2 在业务代码内每次的初始dom和绑定se
  • np.eye()函数

    np eye 的函数 除了生成对角阵外 还可以将一个label数组 大小为 1 m 或者 m 1 的数组 转化成one hot数组 例如它可以将类别总数为6的labels 1 2 3 0 1 1 的数组转化成数组 0 1 0 0 0 0 0
  • Android 执行 gradle test 出错: JAVA_HOME is not set and no 'java' command could be found in your PATH.

    AndroidStudio Terminal控制台 执行 gradle test 出错 JAVA HOME is not set and no java command could be found in your PATH 找到JDK和g
  • Linux下使用gtest对接口进行单元测试

    目录 1 背景 2 gtest 断言 2 1 布尔值判断 2 2 二进制比较 2 3 字符串比较 2 4 浮点数比较 3 实践 3 1 框架使用 3 2 用例编写 3 3 编译运行 4 结论 1 背景 工程中涉及基础接口的设计 为了保证接口
  • pytorch学习笔记——2.5Pytorch中数据操作和预处理

    前言 在torch utils data模块中包含一些常用的数据预处理的操作 比如数据的读取 切分 准备等 通过使用这些类 我们可以对高维数组 图像等各种类型的数据进行预处理 以便在深度学习模型中使用 在本文中 我们主要介绍回归模型和分类模
  • Window.iso镜像文件下载

    Window iso镜像文件下载 https www microsoft com zh cn software download windows10 Window iso官网下载地址 一 使用MediaCreationTool20H2官方工
  • MCU(单片机)datasheet(规格说明书)

    STC 宏晶 型号 程序容量 datasheet STC8G2K64S4 36I QFN48 64K 规格说明书链接 https pan baidu com s 18IickcTlMHgesCkmXFi7Lg pwd tala 提取码 ta
  • gcc、g++、make、cmake区别

    首先介绍一下GCC GNU Compiler Collection GNU 编译器集合 在为Linux开发应用程序时 绝大多数情况下使用的都是C语言 因此几乎每一位Linux程序员面临的首要问题都是如何灵活运用C编译器 目前 Linux下最
  • 【游戏测试工程师】2023年4399秋招笔试+面试记录

    文章目录 一 笔试题 一 逻辑推理题 1 猜花色 2 猜岗位 二 游戏测试相关题 1 假如你要对一款手机游戏进行基本测试 问 一 你会做哪几个方面的测试 二 分别想怎么做 2 编写游戏测试用例 3 编写测试点 三 编程题 1 游戏竞技场 2
  • java swing GUI窗口美化

    一般我们写出的窗口是这个样子的 文本框和按钮都不是太美观 如果按钮是原色的就更难看了 今天发现了一个更加美观的窗口模式 可以发现按钮和文本框都已经有了变化 给窗口润色不少 其实 只需在调用程序前加上这段代码即可 try for javax
  • Atom+Asciidoctor+Antora环境搭建

    个人博客原文链接 Atom 简介 Atom是github专门为程序员推出的一个跨平台文本编辑器 具有简洁和直观的图形用户界面 并有很多有趣的特点 支持CSS HTML JavaScript等网页编程语言 它支持宏 自动完成分屏功能 集成了文
  • LeetCode——040

    40 Combination Sum II My Submissions QuestionEditorial Solution Total Accepted 66386 Total Submissions 241547 Difficulty
  • 搭建Mybatis注意事项和实现原理,你真的看懂了吗?

    搭建Mybatis环境注意事项 一 搭建Mybatis环境注意事项 二 涉及到的设计模式 2 1工厂模式 SqlSessionFactory 2 2 代理模式 MapperProxyFactory 2 3构建者模式 SqlSessionFa
  • openpyxl绘制堆叠图

    本文将会说明如何用openpyxl绘制堆叠图 先来看看效果图 数据处理后效果展示 源数据 老规矩源代码先放上后面再解析 使用时记得要改一下路径哦 先把openpyxl全家桶安排上 from openpyxl import load work
  • Python基础08

    Python基础08 学习08 方法没有重载 在其他语言中 可以定义多个重名的方法 只要保证方法标签名唯一即可 方法签名包含3个部分 方法名 参数数量 参数类型 Python中 方法的参数没有生命类型 调用时确定参数的类型 参数的数量也可以
  • hive文件存储格式:SequenceFile系统总结

    问题导读 1 什么是SequenceFile 2 如何 通过 源码实现SequenceFile压缩 3 SequenceFile格式压缩有什么优点和缺点 1 SequenceFile是什么1 1 SequenceFile概述 1 1 seq