Hive建表时候用的参数及其含义

本文详细介绍了Hive中的序列化和反序列化机制,包括SerDe的不同实现如Lazy、Columnar和Avro等,以及TEXTFILE、SEQUENCEFILE、ORC和PARQUET等存储格式的比较,强调了行存储和列存储的区别以及Hive支持的多种存储格式背后的原因和适用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 1.序列化与反序列化

序列化器(Serializer)和反序列化器(Deserializer)

SerDe 是两个单词的拼写 serialized(序列化) 和 deserialized(反序列化)。 什么是序列化和反序列化呢?

当进程在进行远程通信时,彼此可以发送各种类型的数据,无论是什么类型的数据都会以 二进制序列的形式在网络上传送。发送方需要把对象转化为字节序列才可在网络上传输, 称为对象序列化;接收方则需要把字节序列恢复为对象,称为对象的反序列化。

Hive的反序列化是对key/value反序列化成hive table的每个列的值。Hive可以方便 的将数据加载到表中而不需要对数据进行转换,这样在处理海量数据时可以节省大量的时间。

读写行数据流程如下:
- 读

HDFS files --> InputFileFormat --> <key, value> --> Deserializer --> Row object
- 写

Row object --> Serializer --> <key, value> --> OutputFileFormat --> HDFS files

ALTER TABLE my_table 
SET SERDE 'org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe' 
WITH SERDEPROPERTIES (
    "serialization.format" = ",",
    "field.delim" = ","
);

field.delim是表的两个列字段之间的文件中的字段分隔符.

其中serialization.format是文件序列化时表中两个列字段之间的文件中的字段分隔符.

其中LazySimpleSerDe还可以替换为:

1.LazyBinarySerDe,其中前者是用于把数据进行二进制序列化的,LazyBinarySerDe可以延迟解析数据,避免了大量解析无关数据的开销,提高了处理效率。

2.ColumnarSerDe

适用于针对列式存储格式的列存储数据(如ORC或Parquet&#

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值