當前位置:成語大全網 - 書法字典 - 配置單元行格式和SerDe

配置單元行格式和SerDe

Serde是Serializer/Deserializer的縮寫。Hive使用Serde對行對象進行排序和反序列化。

序列化是將對象轉換為字節序列的過程。

序列化是將字節序列還原到對象的過程。

對象的序列化主要有兩個目的:對象的持久化,即將對象轉換成字節序列保存在文件中;對象數據的網絡傳輸。

除了以上兩點,hive的序列化還包括:hive的反序列化是將key/value反序列化為Hive表各列的值。Hive可以輕松地將數據加載到表中,無需數據轉換,在處理海量數據時可以節省大量時間。

SerDe解釋了hive如何處理壹條記錄,包括兩個函數:Serialize/deserize。Serialize將hive使用的java對象轉換為可以寫入hdfs的字節序列,或者其他系統可以識別的流文件。Deserilize將字符串或二進制流轉換為hive可以識別的java對象。例如,select語句將使用Serialize對象來解析hdfs數據;Insert語句會使用Deserilize,數據會寫入hdfs系統,需要序列化。

讀取hdfs文件時,關鍵部分會被忽略。寫hdfs文件時,鍵始終是壹個常量,壹般行數據存儲在值中。

創建表時可以使用用戶定義的Serde或本機Serde,如果未指定ROW FORMAT或指定了RowFormat Defined,則使用本機Serde。Hive已經實現了許多定制的Serde,這在我們之前介紹stored時也涉及到了:

使用正則化來序列化行數據,如下例所示:

以json格式保存文本文件。

文本文件以CSV/TSV格式存儲。

行格式

' org . Apache . Hadoop . hive . serde 2 . opencsvserde '

存儲為文本文件

以下示例創建壹個tsv文件。默認情況下,它是csv文件的分隔符。

Hive的CSVSerde是基於csv-serde實現的。

最後,附上2009年8月臉書Hive用戶會議對serde的解釋。