hive Serde(默认)


Hive 读文件机制
首先调用InputFormat(默认TextFormat),返回一条一条的键值对记录(默认是一行对一行键值对)。然后用Serde(默认为LazySimpleSerde)的Deserializer,将一条记录的value根据分隔符切分为各个字段。

HDFS files InputFileFormat <key,value> Deserizlizer Row object

hive 写文件机制
将行写入文件时,首先调用Serde(默认LazySimpleSerde)的Serializer将对象转换成字节序列,然后调用OutputFormat将数据写入HDFS文件中。

Row object Serializer <key,value> OutputFormat HDFS files

Serde --> Serializer、Deserializer的简称,用于序列化和反序列化

  • 序列化:将对象转换为字节码
  • 反序列化:将字节序列转化为对象

hive 使用 Serde (包括FileFormat) 读取和写入表 行对象 ;但是key会被忽略,基本上行对象存储在 value 中

语法:
create [temporary] [external] table [if not exists] [database.name] table_name
[data_name data_type,......]
[partitioned by(col_name data_type,......)]
[clustered by(COLUMN_NAME......) [sorted by (col_name desc)] into num_buckets BUCKETS]
[row format delimited [fields terminated by ''] [collection items terminated by ''] [map keys terminated by ''] [lines terminated by ''] | Serde serde_name WITH SERDEPROPERTIES(property_name=property_value,......)]
[sorted as file_format]
[location hdfs_path]
[tblproperties(properties_name=properties_value,......)];

tips

row format为语法关键字,delimited和serde二选一,如果**使用delimited表示使用默认的LazySimpleSerde类来处理数据
对于特殊的文件格式使用row format serde serde_name指定其他的Serde类来处理数据,支持用户自定义Serde类

posted @   lyw2004  阅读(81)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 25岁的心里话
点击右上角即可分享
微信分享提示