關於hive RegexSerDe的原始碼分析

2021-06-23 01:05:52 字數 1057 閱讀 3127

最近有個業務建表使用了 regexserde,之前雖然也它來解析nginx日誌,但是沒有做深入的了解。這次看了下其實現方式。

建表語句:

17create external table ods_cart_log

time_local string,

request_json string,

trace_id_num string

partitioned by

dt string,

hour string

row format serde 'org.apache.hadoop.hive.contrib.serde2.regexserde'

with serdeproperties

("input.regex" =

"output.format.string" ="%1$s %2$s %4$s")

stored as textfile;

測試資料:

5[2014-07-24 15:54:54] [6] operationdata.php:

:89|}

trace_id [40618849399972881308]

這裡trace_id_num按照猜想應該是第4個字段(即40618849399972881308),但是實際輸出了第3個字段(trace_id)

檢視其**實現:

regexserde主要由下面三個引數:

1)input.regex 正則

2)output.format.string 輸出格式

3)input.regex.case.insensitive 大小寫是否敏感

其中input.regex用在反序列化方法中,即資料的讀取(hive讀取hdfs檔案),相對的output.format.string 用在序列化的方法中,即資料的寫入(hive寫入hdfs檔案)。

在反序列化的方法deserialize中有如下**,用於返回代表匹配欄位的資料:

17 for (int c = 0; c < numcolumns; c++) catch (runtimeexception e) 瀋陽看肝病哪個醫院好

關於程式關於世界

首先,在學了1年多的軟體設計的基礎上,問下自己 程式是什麼?業務需求是什麼?程式有什麼用?什麼是演算法?什麼是資料庫?或許每個人的理解不同,會給出不同的答案。那麼自己的理解 程式是乙個讓計算機工作的流程,在程式寫好之後,計算機就會按照,程式設計師定義好流程在執行。其實很多時候,乙個程式的好壞,在於乙...

關於血液關於軟體

1 自然沉降法 將血袋垂直吊掛於4 2 冰箱內,使紅細胞自然下沉1 3d,或將血袋呈70 80 角立於冰箱,需用時,用一次性分漿器分出血漿,制得濃縮紅細胞。2 洗滌法 一般用生理鹽水反覆洗滌3 6次。經洗滌的紅細胞,除白細胞和血小板減少外,血漿蛋白也極少,紅細胞中殘存的血漿蛋白含量約為原總蛋白的1 ...

關於冷漠,關於愛情

我不知道為什麼今天又莫名其妙開始思考愛情這件事,隨之就解決了我一直無法面對冷漠這件事 被冷漠是我始終無法消化的一件事,每當遇見冷漠時,我總會覺得就像一團火把自己燒得面目全非,但對方卻毫無傷害。但我突然懂了,遇到冷漠時,體面的離開即可 在乎你的人一定會在你離開後,找到你跟你解釋為什麼 連解釋都來不及,...