一.简介

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]}}

最新文章

  1. PHP服务器配置环境变量
  2. salesforce 零基础学习(二十八)使用ajax方式实现联动
  3. iOS-多线程--介绍NSOperration
  4. 为easyui datagrid 添加上下方向键移动
  5. 三层交换配置VLAN+DHCP+ACL
  6. 1.Spring Web MVC有什么
  7. 如何设置table的border-radius?
  8. UIButton-初识IOS
  9. POJ1988 并查集的使用
  10. python 装饰器、内部函数、闭包简单理解
  11. .Net平台-MVP模式初探(一)
  12. Ext.MessageBox.Show使用Progress
  13. ajax提交File文件
  14. JavaScript中for循环的使用详解
  15. GitHub 入门教程
  16. 请小心使用 ng-repeat 中的 $index
  17. NSAttributedString富文本简单介绍和常用方法浅析
  18. 使用TCP通信文件上传
  19. Python在线聊天软件(Tkinter)
  20. nat表使用

热门文章

  1. ES6基础之——get 与 set
  2. Sql Server 导出数据库表结构的SQL查询语句
  3. Java--java.util.stream.Collectors文档实例
  4. Java必考题目之JVM面试题目和答案
  5. ASE19 团队项目 模型组 scrum report集合
  6. 日常开发用Windows 好还是 Ubuntu好?
  7. 【转】FireMonkey ListView 自动计算行高
  8. Html5+Css3小试牛刀
  9. dart 函数练习
  10. js excel导出功能