Hive之序列化与反序列化(SerDe)

Posted smallji

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Hive之序列化与反序列化(SerDe)相关的知识,希望对你有一定的参考价值。

序列化与反序列化的作用

1,序列化是对象转化为字节序列的过程;

2,反序列化是字节码恢复为对象的过程;

序列化的作用主要有两个:

(1),对象向的持久化;即把对象转换成字节码后保存文件;

(2),对象数据的传输;

反序列化的主要作用:

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

  在Hive的HQL语句中,select时将会用到序列化操作, insert 时会用到反序列化操作,下面是具体的操作过程。

SerDe使用

Hive创建表时,通过定义的SerDe或使用Hive内置的SerDe类型指定数据的序列化和反序列化方式。

CREATE [EXTERNAL] TABLE [IF NOT EXISTS] table_name
[(col_name data_type [COMMENT col_comment], ...)]
[COMMENT table_comment]
[PARTITIONED BY (col_name data_type [COMMENT col_comment], ...)]
[CLUSTERED BY (col_name, col_name, ...)
[SORTED BY (col_name [ASC|DESC], ...)]
INTO num_buckets BUCKETS]
[ROW FORMAT row_format]
[STORED AS file_format]
[LOCATION hdfs_path]

如上创建表语句, 使用row format 参数说明SerDe的类型。

SerDe包括内置类型

Avro
ORC
RegEx
Thrift
Parquet
CSV
JsonSerDe

 

Eg..
CREATE
EXTERNAL TABLE IF NOT EXISTS teacher ( id BIGINT, name STRING, age INT) ROW FORMAT SERDE \'com.coder4.hive.MySerDe\' STORED AS TEXTFILE LOCATION \'/usr/hive/text/\'
参考:https://www.jianshu.com/p/9c43f03b97e7
https://cwiki.apache.org/confluence/display/Hive/DeveloperGuide#DeveloperGuide-HiveSerDe

 

以上是关于Hive之序列化与反序列化(SerDe)的主要内容,如果未能解决你的问题,请参考以下文章

Hive系列之SerDe

Hive之SerDe&Beeline

Hive 如何存储数据,啥是 SerDe?

用于ORC或RC格式的Hive Json SerDE

用于 ORC 或 RC 格式的 Hive Json SerDE

Hive 无法反序列化可选的节俭字段