準備
包括軟硬件環境、數據、測試數據三方面的準備內容。
環境
虛擬機軟件virtualbox7,同樣的虛擬機配置:內存2G、cpu一核,物理主機同一臺macbookpro(13-2020款),所以硬盤IO讀寫速度一致。
綜上:hive環境與oracle環境是同樣的cpu、內存、硬盤、帶寬配置。
數據
使用倉庫、組織、物料、庫存流水,進行響應測試,oracle使用dbeaver等將測試數據從外系統加載至測試環境,hive使用sqoop將測試數據從外系統加載至測試環境。
hive中,表名、列名是不區分大小寫的,但庫名區分大小寫。oracle中,表名、列名、庫名均不區分大小寫。
測試數據的加載,按照oracle、hive的不同,分別采用不同的方式和工具進行處理。建表、導入數據并記錄導入數據所消耗時間。
oracle加載數據統計表
序號 | 表 | 方式 | 數據量 | 耗時 |
1 | T_OD_BD_STORDOC | dbeaver | 65 | 0.67s |
2 | T_OD_ORG_ORGS | dbeaver | 1042 | 15s |
3 | T_OD_BD_MATERIAL | sqlplus | 42388 | 5m39s |
4 | T_OD_IC_FLOW | 存儲過程 | 193537 | 1m52s |
備注:1、數據量超達到4萬條,dbeaver客戶端加載數據明顯慢很多,受限于客戶端工具(客戶端工具是java所開,需要將sql文件在工具中打開),改為使用服務端加載。
2、ic_flow 無法使用sqlplus這種方式,因為其導出的insert批量文件,文件中的insert語句超過sqlplus最大輸入范圍,改為使用存儲過程。
hive加載數據統計表
序號 | 表 | 方式 | 數據量 | 耗時 |
1 | HT_OD_BD_STORDOC | sqoop | 65 | 0.54s |
2 | HT_OD_ORG_ORGS | sqoop | 1042 | 3.08s |
3 | HT_OD_BD_MATERIAL | sqoop | 42388 | 3.49s |
4 | HT_OD_IC_FLOW | sqoop | 193537 | 3.73s |
測試數據
hive使用hplsql循環導入T_OD_IC_FLOW_10百萬行、T_OD_IC_FLOW_100千萬行數據時,系統報錯,java虛擬機崩潰。最后計劃使用T_OD_IC_FLOW中數據向T_OD_IC_FLOW_10手動加載10次,完成T_OD_IC_FLOW_10的數據導入,也不成功,遂放棄。
最終測試數據表統計如下。
表名 | 數據量 | 占用空間 | |||
oracle | hive | 行 | 列 | oracle | hive |
T_OD_BD_STORDOC | HT_OD_BD_STORDOC | 65 | 45 | 0.0625M | 0.0183M |
T_OD_ORG_ORGS | HT_OD_ORG_ORGS | 1042 | 130 | 0.6875M | 0.6168M |
T_OD_BD_MATERIAL | HT_OD_BD_MATERIAL | 42388 | 86 | 20M | 19.62M |
T_OD_IC_FLOW | HT_OD_IC_FLOW | 193537 | 166 | 232M | 208.77M |
T_OD_IC_FLOW_10 | HT_OD_IC_FLOW_10 | 1935370 | 166 | 2304M | |
T_OD_IC_FLOW_100 | HT_OD_IC_FLOW_100 | 19353700 | 166 | 22733M |