hive(一) FileFormate 和SerDe的关联关系

Hive采用不同的FileFormat存储数据,如TextFile、SequenceFile等,而SerDe负责数据的序列化和反序列化。SerDe在读写过程中处理HDFS文件与Hive表之间的转换。FileFormat和SerDe虽有关联但概念独立,SerDe是FileFormat功能的实现。用户可以自定义InputFORMAT和OUTPUTFORMAT以实现特定的存储需求。
摘要由CSDN通过智能技术生成

一、FileFormate 

hive数仓和mysql、clickhouse一类的数据库不同,hive表的数据是存储在hdfs文件系统中的,它底层的存储文件可以是多种数据格式,目前hive支持的文件格式有:
    Text File
    SequenceFile
    RCFile
    Avro Files
    ORC Files
    Parquet
    Custom INPUTFORMAT and OUTPUTFORMAT
如果在建表或者更改表时没有显式指定hive要存储成的文件格式,那么默认是Text File文件格式
不过可以通过配置hive.default.fileformat来更改默认的文件存储格式。

二、SerDe

SerDe是Serializer & DeSerializer的简称,是指数据写入hive表或者从hive表读取数据时的序列化和反序列化操作(控制文件数据和hive表中Row数据的转换。其读写流程如下:
read:HDFS files --> InputFileFormat --> <key, value> --> Deserializer --> Row object
write: object --> Serializer --> <key, value> --> OutputFileFormat --> HDFS files

三、FileFormat和SerDe的关系

File Format文件格式一般是在建表或更改表时显式声明hive表在hdfs文件系统中的存储格式,
一旦设置了某种文件存储格式后,当有数据写入hive表或者从hive表读取数据时需要先通过对应的SerDe对数据进行处理

所以简单理解,可以将SerDe看做FileFormat的功能支持或实现,我们设置了FileFormat后,底层数据格式的转换是依赖SerDe来做的。但是实际上SerDe和FileFormat是两个独立的概念体系,在理解时千万不要混淆了。

SerDe分为序列化和反序列化,分别对应输入格式化(INPUTFORMAT)和输出格式化(OUTPUTFORMAT),所以在上述介绍hive支持的文件格式时有个Custom INPUTFORMAT and OUTPUTFORMAT选项,这个其实就是指hive允许自定义存储格式,只要我们自己实现其对应的输入格式化和输出格式化的操作就行。

参考:

FileFormats - Apache Hive - Apache Software Foundation

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值