hadoop生态圈-- 个人笔记学习03 文件存储格式

传统文件存储格式:就jpeg,mp3,doc等

server/ host上,由块设备,如硬盘。软盘等

  • 每个文件系统将一个分区拆为多个块存储文件,文件系统块大小不同

hadoop没有默认文件格式,格式选择取决用途。在HDFS应用程序(如MapReduce or Spark)中, 性能瓶颈在于特定位置查找数据和写入消耗的时间。管理大量数据也很复杂(数据的存储,数据格式变化)

需要选择合适的文件格式

  1. 保证读写速度
  2. 文件可切分
  3. 压缩支持
  4. schema更改支持

数据处理的不同阶段使用不同格式:发挥优势

Hadoop 存储格式

Text File

文本文件,每一行一条记录。文本文件可以被切分。 若要压缩文件,需要压缩解码器(支持切分文件

场景:直接从文件加载大量数据情况下建议使用纯文本or csv

优点:

  1. 简单
  2. 轻量

缺点

  • 读写慢
  • 不支持块压缩,hadoop压缩、解压读取成本较高

Sequence File

数据以kv序列化存储, Sequence数据以二进制格式存储,内部不支持对kv结构指定格式编码

多数作为 中间数据结构,大量小文件合并于SequenceFile中

优点

  • 紧凑
  • 支持块级压缩
    • 压缩的同时可以切分文件
    • 序列文件支持别的项目
    • 摆脱文本文件
  • 大量小文件的容器

缺点

  • 对SQL的Hive支持不好,要读取解压所有字段
  • 不存储元数据
  • 扩展唯一方法为append

Avro File

语言无关的序列化系统。基于行,包含JSON的schema定义,提高互操作性允许schema变化(删除行列
可切分、可压缩。 schema直接编码存储在文件里面,存复杂结构数据,可以快速sequentialize,序列化数据较小

场景

  • 一次性把大量数据(列)写入或频繁写入的场景

一行数据序列化于一个block里面

优点

  1. 操作少量列较低效,行存储效率较低(读某两列数据,那么可能需要读取全部的行)此时列式存储效率更高效
  2. 列式将同一列(类数据存在一起)压缩率更高

RCFile

基于MR的数据仓库系统设计的数据存储结构,结合了行存储和列存储的优点。满足快速加载和查询 —— 利用存储空间,适应高负载需求。 二进制kv组成的flat文件。

分析的时候一般使用列存储

  • 数据分为几组行,数据存储在列中
  • 行水平拆分 row group,然后列方式垂直划分 columns
  • 行存储:RCFile保证一行数据在一个节点中
  • RCFile用列数据压缩,跳过不必要的列读取

优点

  1. 列式储存 压缩比更好
  2. 元数据支持数据类型
  3. 支持split

缺点
不支持schema扩展,如果要添加新的列,需要重写文件

ORC

优化行列,比RC更优化存储数据。原始数据大小最多减小75%

性能高,列数据单独存储类型专用编码器轻量级索引

Parquet

列式存储,二进制,可存储嵌套数据结构

  • 合适压缩,合适查询 —— 特别是特定列
  • 写入速度较慢。

压缩文件的选择

  • 若文件不可切分 —— 只有一个CPU处理文件,其他CPU空闲,影响效率
  • 支持切分的算法可能压缩解压缩较慢,影响查询效率
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值