Orientdb 定向ETL性能问题,将边缘导入SSD上的plocal
我的目标是在图中导入25M条边,其中有大约50M个顶点。目标时间: 当前导入速度约为150边/秒。远程连接的速度约为100边/秒Orientdb 定向ETL性能问题,将边缘导入SSD上的plocal,orientdb,orientdb2.2,orientdb-etl,Orientdb,Orientdb2.2,Orientdb Etl,我的目标是在图中导入25M条边,其中有大约50M个顶点。目标时间: 当前导入速度约为150边/秒。远程连接的速度约为100边/秒 提取20694336行(171行/秒)-20694336行->加载20691830个顶点(171个顶点/秒)总时间:35989762ms[0 警告,4个错误] 提取20694558行(156行/秒)-20694558行->加载20692053个顶点(156个顶点/秒)总时间:35991185ms[0 警告,4个错误] 提取20694745行(147行/秒)-2069
- 提取20694336行(171行/秒)-20694336行->加载20691830个顶点(171个顶点/秒)总时间:35989762ms[0 警告,4个错误]
- 提取20694558行(156行/秒)-20694558行->加载20692053个顶点(156个顶点/秒)总时间:35991185ms[0 警告,4个错误]
- 提取20694745行(147行/秒)-20694746行->加载20692240个顶点(147个顶点/秒)总时间:35992453ms[0 警告,4个错误]
- 提取20694973行(163行/秒)-20694973行->加载20692467个顶点(162个顶点/秒)总时间:35993851ms[0 警告,4个错误]
- 提取20695179行(145行/秒)-20695179行->加载20692673个顶点(145个顶点/秒)总时间:35995262ms[0 警告,4个错误]
{
"config": {
"log": "info",
"parallel": true
},
"source": {
"input": {}
},
"extractor": {
"row": {
"multiLine": false
}
},
"transformers": [
{
"code": {
"language": "Javascript",
"code": "(new com.orientechnologies.orient.core.record.impl.ODocument()).fromJSON(input);"
}
},
{
"merge": {
"joinFieldName": "_ref",
"lookup": "Company._ref"
}
},
{
"vertex": {
"class": "Company",
"skipDuplicates": true
}
},
{
"edge": {
"joinFieldName": "with_id",
"lookup": "Person._ref",
"direction": "in",
"class": "Stakeholder",
"edgeFields": {
"_ref": "${input._ref}",
"value_of_share": "${input.value_of_share}"
},
"skipDuplicates": true,
"unresolvedLinkAction": "ERROR"
}
},
{
"field": {
"fieldNames": [
"with_id",
"with_to",
"_type",
"value_of_share"
],
"operation": "remove"
}
}
],
"loader": {
"orientdb": {
"dbURL": "plocal:/mnt/disks/orientdb/orientdb-2.2.12/databases/df",
"dbUser": "admin",
"dbPassword": "admin",
"dbAutoDropIfExists": false,
"dbAutoCreate": false,
"standardElementConstraints": false,
"tx": false,
"wal": false,
"batchCommit": 1000,
"dbType": "graph",
"classes": [
{
"name": "Company",
"extends": "V"
},
{
"name": "Person",
"extends": "V"
},
{
"name": "Stakeholder",
"extends": "E"
}
]
}
}
}
数据样本:
{u-ref:“1072308006473”,“with-to:“person”,“with-id:”010703814320“,”u-type:”是利益相关者“,”是股份的价值“:10000.0}{{u-ref:”10758370000095“,”是股份的价值“:”是股份的价值“,”是股份的价值“,”是股份的价值“,”是股份的价值“,”是股份的价值“,”是股份的价值“,”是股份的价值“,”是股份的价值“:”是股份的价值“,”是股份的价值“,”是股份的“是股份的价值“,”是股份的价值“:”:33150.0}
服务器的规格是:谷歌云上的实例、PD-SSD、6CPU、18GB RAM
顺便说一句,在同一台服务器上,我使用远程连接导入顶点的速度达到了~3k/秒(速度仍然太慢,但对于我当前的数据集来说是可以接受的)
还有一个问题:是否有可靠的方法可以将导入速度提高到每秒10k或至少5k?我不想关闭索引,它仍然是数百万条记录,而不是数十亿条
更新
几个小时后,性能继续恶化
- 提取23146912行(56行/秒)-23146912行->加载23144406个顶点(56个顶点/秒)总时间:6088697ms[0 警告,4个错误]
- 提取23146981行(69行/秒)-23146981行->加载23144475个顶点(69个顶点/秒)总时间:60887967毫秒[0 警告,4个错误]
- 提取23147075行(39行/秒)-23147075行->加载23144570个顶点(39个顶点/秒)总时间:60890356ms[0 警告,4个错误]
日志中有哪些错误?您可以在github上打开一个问题…公司上有索引吗?甚至个人上也有索引吗?当然,两个索引都有(hashmap唯一)。关于错误:它是“当前数据库实例在当前线程上不活动”。关于这种类型的异常有很多提及,所以我决定OrientDB团队已经承认了这个问题。日志中有哪些错误?您可以在github上打开一个问题…公司上有索引吗?甚至个人上也有索引吗?当然,两个索引都有(hashmap唯一)。关于错误:它是“当前数据库实例在当前线程上不活动”。关于这种类型的异常有很多提及,所以我决定OrientDB团队已经承认了这个问题。