spark建网测试
neo4j初始化建网,通过MySQL,sparkSQL进行清洗,生成初始化neo4j需要库
初始化建网测试流程
[toc]
测试目标
原始数据100万,1000万,1亿建网性能测试
测试流程
1. 数据生成:
MockData模拟生成测试数据
数据格式
name,cardId,tel,road,companyAddr,email,date,fromBankCard,toBankCard,money
张龙天,110110198611240000,13100006196,台西纬五路60号-2,吴兴大厦65号-13,g1ot@ask.com,2016-09-10 13:11:12,6228760705002779059,6228760705002776468,9206.00
漆婷,110110198503300000,15600004433,鱼山广场102号-18,鱼山支街89号-11,4c@ask.com,2017-12-18 04:30:04,6228760705002777167,6228760705002771293,5025.00
郭策中,110110199703190000,15100009007,沈阳支大厦114号-6,天台路123号-7,6nubl@263.net,2017-10-17 17:36:13,6228760705002776099,6228760705002776797,6093.00
阳荣琼,110110198206200000,13600008908,宁国二支路107号-20,观海二广场83号-4,ap@sohu.com,2012-09-21 23:46:02,6228760705002772779,6228760705002776934,4466.00
刘和,110110198902240000,15000004908,福建广场41号-3,湖北街105号-15,nrfz@0355.net,2013-11-09 17:03:12,6228760705002771812,6228760705002771578,5766.00
2. 数据清洗:
对生成的数据进行数据清洗,生成node跟link的数据(csv格式)
-- 建网关系整理:
-- 节点:
-- 6种节点 1-身份证号:cardId、4-手机号:tel、7-居住地址(road)、8-单位名称(companyAddr)、9-email,2-fromBankCard
-- 关系整理:
-- 5种关系:身份证-手机号,身份证-->居住地址,身份证-->单位名称,身份证-->邮箱,身份证-->付款卡号
两种清洗方式
1. 利用MySQL,执行sql语句处理
① 100万csv数据导入mysql,导入时间:5分钟 ② 执行节点清洗的sql,执行时间5分钟 ③ 执行关系清洗的sql,执行时间5分钟 ④ 节点,关系表数据导出成csv,4943344节点(16.30 sec),4999998关系(16.30 sec) 100万数据处理需要15分钟
2. 编写spark程序,用SparkSQL处理
① 上传csv文件到hdfs ② spark加载csv文件 ③ 清洗节点与关系 ④ 结果数据保存csv文件到hdfs 1千万数据,spark执行时间:7分1秒213毫秒 1亿数据,spark执行时间:执行时间:54分32秒262毫秒
数据量 | 数据大小 | Spark资源 | Spark处理 | 初始化库时间 | Node.csv | link.csv | 初始化库 |
---|---|---|---|---|---|---|---|
1千万 | 1.6G | 24Core 80G | 7分1秒 | 5m 12s | 1.3G (940万节点) | 8.5G (499万关系) | 16G (2940万属性) |
1亿 | 16G | 27Core 126G | 54分32秒 | 38m 33s | 6G (4665万节点) | 77G (4.48亿关系) | 129G (5.6亿属性) |
比较两种数据处理方式:
- mysql方式不需要依赖其组件,不需要编写程序来执行,可以写SQL进行数据探测,适合小批量数据量,但是处理时间较长
- spark方式依赖大数据组件(hdfs,spark),处理性能对比mysql大幅度提升,推测用spark处理方式可以提升性能20倍左右,但是需要编写程序,适合相对稳定的处理逻辑
3. 初始化NEO4J库:
把csv文件导入到neo4j,建立节点,关系,初始化图数据库
100万数据:
IMPORT DONE in 1m 48s 893ms. Imported: 2451960 nodes 4992534 relationships 29423520 properties Peak memory usage: 1.05 GB
1000万数据:
IMPORT DONE in 5m 12s 86ms. Imported: 9418779 nodes 49281340 relationships 113025348 properties Peak memory usage: 1.12 GB
1亿数据:
IMPORT DONE in 38m 33s 714ms. Imported: 46651360 nodes 448118100 relationships 559816320 properties Peak memory usage: 1.57 GB
spark计算1亿条数据处理资源消耗截图