准备
包括软硬件环境、数据、测试数据三方面的准备内容。
环境
虚拟机软件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 |