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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM