hive序列化和反序列化serde
2024-09-05 10:17:58
一.简介
SerDe是Serializer/Deserializer的缩写。
SerDe允许Hive读取表中的数据,并将其以任何自定义格式写回HDFS。 任何人都可以为自己的数据格式编写自己的SerDe。
序列化与反序列化的作用
1,序列化是对象转化为字节序列的过程;
2,反序列化是字节码恢复为对象的过程;
序列化的作用主要有两个:
(1)对象向的持久化;即把对象转换成字节码后保存文件;
(2)对象数据的传输;
反序列化的主要作用:
对<key,value>反序列化成Hive table的每一列的值;Hive可以方便的将数据加载到表中而不需要对数据进行转换,这样在海量数据处理时,可以节省大量的时间。
二.内置SerDes
Avro
ORC
Regex
Thrift
parquet
CSV
JsonSerDe
三.Serde使用
1.RegexSerde
CREATE TABLE apachelog (
host STRING,
identity STRING,
user STRING,
time STRING,
request STRING,
status STRING,
size STRING,
referer STRING,
agent STRING)
ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.RegexSerDe'
WITH SERDEPROPERTIES (
"input.regex" = "([^]*) ([^]*) ([^]*) (-|\\[^\\]*\\]) ([^ \"]*|\"[^\"]*\") (-|[0-9]*) (-|[0-9]*)(?: ([^ \"]*|\".*\") ([^ \"]*|\".*\"))?"
)
STORED AS TEXTFILE;
2.CsvSerde
CREATE TABLE my_table(a string, b string, ...)
ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.OpenCSVSerde'
WITH SERDEPROPERTIES (
"separatorChar" = "\t",
"quoteChar" = "'",
"escapeChar" = "\\"
)
STORED AS TEXTFILE;
DEFAULT_ESCAPE_CHARACTER \
DEFAULT_QUOTE_CHARACTER "
DEFAULT_SEPARATOR ,
3.JsonSerde
CREATE TABLE json_nested_test (
country string,
languages array<string>,
religions map<string,array<int>>
)
ROW FORMAT SERDE 'org.openx.data.jsonserde.JsonSerDe'
STORED AS TEXTFILE; #查询
select country,languages,languages[],religions,religions['catholic'][] from json_nested_test;
记录格式:
{"country":"Switzerland","languages":["German","French","Italian"],"religions":{"catholic":[10,20],"protestant":[40,50]}}
最新文章
- PHP服务器配置环境变量
- salesforce 零基础学习(二十八)使用ajax方式实现联动
- iOS-多线程--介绍NSOperration
- 为easyui datagrid 添加上下方向键移动
- 三层交换配置VLAN+DHCP+ACL
- 1.Spring Web MVC有什么
- 如何设置table的border-radius?
- UIButton-初识IOS
- POJ1988 并查集的使用
- python 装饰器、内部函数、闭包简单理解
- .Net平台-MVP模式初探(一)
- Ext.MessageBox.Show使用Progress
- ajax提交File文件
- JavaScript中for循环的使用详解
- GitHub 入门教程
- 请小心使用 ng-repeat 中的 $index
- NSAttributedString富文本简单介绍和常用方法浅析
- 使用TCP通信文件上传
- Python在线聊天软件(Tkinter)
- nat表使用