GitHub user wangzhewwzz added a comment to the discussion: 关于电网拓扑数据导入

按照你的建议改成如下
"field_mapping": { "from": "from", "to": "to" },     
 "value_mapping": {        "label": { "CONNECTED_TO": 
"Substation2LineSegment" },        "source_label": { 
"Substation": "Substation" },        "target_label": { 
"LineSegment": "LineSegment" }      }
导入报错如下


(base) PS C:\Users\GH-76\hugegraph-1.7.0> docker exec -it hugegraph-loader 
bin/hugegraph-loader.sh -g hugegraph -f /loader/power_data/struct_1.json -s 
/loader/power_data/schema_1.groovy -h server -p 8080 --clear-all-data true
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in 
[jar:file:/loader/lib/log4j-slf4j-impl-2.18.0.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in 
[jar:file:/loader/lib/apache-hugegraph-loader-incubating-1.7.0-shaded.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in 
[jar:file:/loader/lib/slf4j-log4j12-1.7.25.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J: Actual binding is of type [org.apache.logging.slf4j.Log4jLoggerFactory]
WARNING: sun.reflect.Reflection.getCallerClass is not supported. This will 
impact performance.
ERROR StatusLogger Reconfiguration failed: No configuration found for 'Default' 
at 'null' in 'null'
WARNING: An illegal reflective access operation has occurred
WARNING: Illegal reflective access by 
org.codehaus.groovy.reflection.CachedClass 
(file:/loader/lib/apache-hugegraph-loader-incubating-1.7.0-shaded.jar) to 
method java.lang.Object.finalize()
WARNING: Please consider reporting this to the maintainers of 
org.codehaus.groovy.reflection.CachedClass
WARNING: Use --illegal-access=warn to enable warnings of further illegal 
reflective access operations
WARNING: All illegal access operations will be denied in a future release
>> HugeGraphLoader worked in NORMAL MODE
vertices/edges loaded this time : 03:20:58.746 [loader] ERROR 
org.apache.hugegraph.loader.task.ParseTaskBuilder - Parse EDGE error
org.apache.hugegraph.loader.exception.ParseException: Make sure the primary key 
fields [id] are not empty, or check whether the headers or field_mapping are 
configured correctly
        at 
org.apache.hugegraph.loader.task.ParseTaskBuilder.lambda$buildTask$0(ParseTaskBuilder.java:124)
 ~[hugegraph-loader-1.7.0.jar:1.7.0]
        at 
org.apache.hugegraph.loader.task.ParseTaskBuilder$ParseTask.get(ParseTaskBuilder.java:163)
 ~[hugegraph-loader-1.7.0.jar:1.7.0]
        at 
org.apache.hugegraph.loader.HugeGraphLoader.executeParseTask(HugeGraphLoader.java:816)
 ~[hugegraph-loader-1.7.0.jar:1.7.0]
        at 
org.apache.hugegraph.loader.HugeGraphLoader.loadStruct(HugeGraphLoader.java:789)
 ~[hugegraph-loader-1.7.0.jar:1.7.0]
        at 
org.apache.hugegraph.loader.HugeGraphLoader.lambda$asyncLoadStruct$14(HugeGraphLoader.java:734)
 ~[hugegraph-loader-1.7.0.jar:1.7.0]
        at 
java.util.concurrent.CompletableFuture$AsyncRun.run(Unknown Source) ~[?:?]
        at 
java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) ~[?:?]
        at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) ~[?:?]
        at java.lang.Thread.run(Unknown Source) ~[?:?]
Caused by: java.lang.IllegalArgumentException: Make sure the primary key fields 
[id] are not empty, or check whether the headers or field_mapping are 
configured correctly
        at 
com.google.common.base.Preconditions.checkArgument(Preconditions.java:164) 
~[guava-30.0-jre.jar:?]
        at 
org.apache.hugegraph.util.E.checkArgument(E.java:52) 
~[hugegraph-common-1.5.0.jar:1.5.0]
        at 
org.apache.hugegraph.loader.builder.ElementBuilder$VertexPkKVPairs.extractFromEdge(ElementBuilder.java:682)
 ~[hugegraph-loader-1.7.0.jar:1.7.0]
        at 
org.apache.hugegraph.loader.builder.EdgeBuilder.build(EdgeBuilder.java:88) 
~[hugegraph-loader-1.7.0.jar:1.7.0]
        at 
org.apache.hugegraph.loader.task.ParseTaskBuilder.lambda$buildTask$0(ParseTaskBuilder.java:103)
 ~[hugegraph-loader-1.7.0.jar:1.7.0]
        ... 8 more
03:20:58.761 [loader] ERROR org.apache.hugegraph.loader.task.ParseTaskBuilder - 
Parse EDGE error
org.apache.hugegraph.loader.exception.ParseException: Make sure the primary key 
fields [id] are not empty, or check whether the headers or field_mapping are 
configured correctly
        at 
org.apache.hugegraph.loader.task.ParseTaskBuilder.lambda$buildTask$0(ParseTaskBuilder.java:124)
 ~[hugegraph-loader-1.7.0.jar:1.7.0]
        at 
org.apache.hugegraph.loader.task.ParseTaskBuilder$ParseTask.get(ParseTaskBuilder.java:163)
 ~[hugegraph-loader-1.7.0.jar:1.7.0]
        at 
org.apache.hugegraph.loader.HugeGraphLoader.executeParseTask(HugeGraphLoader.java:816)
 ~[hugegraph-loader-1.7.0.jar:1.7.0]
        at 
org.apache.hugegraph.loader.HugeGraphLoader.loadStruct(HugeGraphLoader.java:789)
 ~[hugegraph-loader-1.7.0.jar:1.7.0]
        at 
org.apache.hugegraph.loader.HugeGraphLoader.lambda$asyncLoadStruct$14(HugeGraphLoader.java:734)
 ~[hugegraph-loader-1.7.0.jar:1.7.0]
        at 
java.util.concurrent.CompletableFuture$AsyncRun.run(Unknown Source) ~[?:?]
        at 
java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) ~[?:?]
        at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) ~[?:?]
        at java.lang.Thread.run(Unknown Source) ~[?:?]
Caused by: java.lang.IllegalArgumentException: Make sure the primary key fields 
[id] are not empty, or check whether the headers or field_mapping are 
configured correctly
        at 
com.google.common.base.Preconditions.checkArgument(Preconditions.java:164) 
~[guava-30.0-jre.jar:?]
        at 
org.apache.hugegraph.util.E.checkArgument(E.java:52) 
~[hugegraph-common-1.5.0.jar:1.5.0]
        at 
org.apache.hugegraph.loader.builder.ElementBuilder$VertexPkKVPairs.extractFromEdge(ElementBuilder.java:682)
 ~[hugegraph-loader-1.7.0.jar:1.7.0]
        at 
org.apache.hugegraph.loader.builder.EdgeBuilder.build(EdgeBuilder.java:88) 
~[hugegraph-loader-1.7.0.jar:1.7.0]
        at 
org.apache.hugegraph.loader.task.ParseTaskBuilder.lambda$buildTask$0(ParseTaskBuilder.java:103)
 ~[hugegraph-loader-1.7.0.jar:1.7.0]
        ... 8 more
03:20:58.762 [loader] ERROR org.apache.hugegraph.loader.task.ParseTaskBuilder - 
Parse EDGE error
org.apache.hugegraph.loader.exception.ParseException: Make sure the primary key 
fields [id] are not empty, or check whether the headers or field_mapping are 
configured correctly
        at 
org.apache.hugegraph.loader.task.ParseTaskBuilder.lambda$buildTask$0(ParseTaskBuilder.java:124)
 ~[hugegraph-loader-1.7.0.jar:1.7.0]
        at 
org.apache.hugegraph.loader.task.ParseTaskBuilder$ParseTask.get(ParseTaskBuilder.java:163)
 ~[hugegraph-loader-1.7.0.jar:1.7.0]
        at 
org.apache.hugegraph.loader.HugeGraphLoader.executeParseTask(HugeGraphLoader.java:816)
 ~[hugegraph-loader-1.7.0.jar:1.7.0]
        at 
org.apache.hugegraph.loader.HugeGraphLoader.loadStruct(HugeGraphLoader.java:789)
 ~[hugegraph-loader-1.7.0.jar:1.7.0]
        at 
org.apache.hugegraph.loader.HugeGraphLoader.lambda$asyncLoadStruct$14(HugeGraphLoader.java:734)
 ~[hugegraph-loader-1.7.0.jar:1.7.0]
        at 
java.util.concurrent.CompletableFuture$AsyncRun.run(Unknown Source) ~[?:?]
        at 
java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) ~[?:?]
        at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) ~[?:?]
        at java.lang.Thread.run(Unknown Source) ~[?:?]
Caused by: java.lang.IllegalArgumentException: Make sure the primary key fields 
[id] are not empty, or check whether the headers or field_mapping are 
configured correctly
        at 
com.google.common.base.Preconditions.checkArgument(Preconditions.java:164) 
~[guava-30.0-jre.jar:?]
        at 
org.apache.hugegraph.util.E.checkArgument(E.java:52) 
~[hugegraph-common-1.5.0.jar:1.5.0]
        at 
org.apache.hugegraph.loader.builder.ElementBuilder$VertexPkKVPairs.extractFromEdge(ElementBuilder.java:682)
 ~[hugegraph-loader-1.7.0.jar:1.7.0]
        at 
org.apache.hugegraph.loader.builder.EdgeBuilder.build(EdgeBuilder.java:88) 
~[hugegraph-loader-1.7.0.jar:1.7.0]
        at 
org.apache.hugegraph.loader.task.ParseTaskBuilder.lambda$buildTask$0(ParseTaskBuilder.java:103)
 ~[hugegraph-loader-1.7.0.jar:1.7.0]
        ... 8 more
03:20:58.762 [loader] ERROR org.apache.hugegraph.loader.task.ParseTaskBuilder - 
Parse EDGE error
org.apache.hugegraph.loader.exception.ParseException: Make sure the primary key 
fields [id] are not empty, or check whether the headers or field_mapping are 
configured correctly
        at 
org.apache.hugegraph.loader.task.ParseTaskBuilder.lambda$buildTask$0(ParseTaskBuilder.java:124)
 ~[hugegraph-loader-1.7.0.jar:1.7.0]
        at 
org.apache.hugegraph.loader.task.ParseTaskBuilder$ParseTask.get(ParseTaskBuilder.java:163)
 ~[hugegraph-loader-1.7.0.jar:1.7.0]
        at 
org.apache.hugegraph.loader.HugeGraphLoader.executeParseTask(HugeGraphLoader.java:816)
 ~[hugegraph-loader-1.7.0.jar:1.7.0]
        at 
org.apache.hugegraph.loader.HugeGraphLoader.loadStruct(HugeGraphLoader.java:789)
 ~[hugegraph-loader-1.7.0.jar:1.7.0]
        at 
org.apache.hugegraph.loader.HugeGraphLoader.lambda$asyncLoadStruct$14(HugeGraphLoader.java:734)
 ~[hugegraph-loader-1.7.0.jar:1.7.0]
        at 
java.util.concurrent.CompletableFuture$AsyncRun.run(Unknown Source) ~[?:?]
        at 
java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) ~[?:?]
        at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) ~[?:?]
        at java.lang.Thread.run(Unknown Source) ~[?:?]
Caused by: java.lang.IllegalArgumentException: Make sure the primary key fields 
[id] are not empty, or check whether the headers or field_mapping are 
configured correctly
        at 
com.google.common.base.Preconditions.checkArgument(Preconditions.java:164) 
~[guava-30.0-jre.jar:?]
        at 
org.apache.hugegraph.util.E.checkArgument(E.java:52) 
~[hugegraph-common-1.5.0.jar:1.5.0]
        at 
org.apache.hugegraph.loader.builder.ElementBuilder$VertexPkKVPairs.extractFromEdge(ElementBuilder.java:682)
 ~[hugegraph-loader-1.7.0.jar:1.7.0]
        at 
org.apache.hugegraph.loader.builder.EdgeBuilder.build(EdgeBuilder.java:88) 
~[hugegraph-loader-1.7.0.jar:1.7.0]
        at 
org.apache.hugegraph.loader.task.ParseTaskBuilder.lambda$buildTask$0(ParseTaskBuilder.java:103)
 ~[hugegraph-loader-1.7.0.jar:1.7.0]
        ... 8 more
03:20:58.763 [loader] ERROR org.apache.hugegraph.loader.task.ParseTaskBuilder - 
Parse EDGE error
org.apache.hugegraph.loader.exception.ParseException: Make sure the primary key 
fields [id] are not empty, or check whether the headers or field_mapping are 
configured correctly
        at 
org.apache.hugegraph.loader.task.ParseTaskBuilder.lambda$buildTask$0(ParseTaskBuilder.java:124)
 ~[hugegraph-loader-1.7.0.jar:1.7.0]
        at 
org.apache.hugegraph.loader.task.ParseTaskBuilder$ParseTask.get(ParseTaskBuilder.java:163)
 ~[hugegraph-loader-1.7.0.jar:1.7.0]
        at 
org.apache.hugegraph.loader.HugeGraphLoader.executeParseTask(HugeGraphLoader.java:816)
 ~[hugegraph-loader-1.7.0.jar:1.7.0]
        at 
org.apache.hugegraph.loader.HugeGraphLoader.loadStruct(HugeGraphLoader.java:789)
 ~[hugegraph-loader-1.7.0.jar:1.7.0]
        at 
org.apache.hugegraph.loader.HugeGraphLoader.lambda$asyncLoadStruct$14(HugeGraphLoader.java:734)
 ~[hugegraph-loader-1.7.0.jar:1.7.0]
        at 
java.util.concurrent.CompletableFuture$AsyncRun.run(Unknown Source) ~[?:?]
        at 
java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) ~[?:?]
        at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) ~[?:?]
        at java.lang.Thread.run(Unknown Source) ~[?:?]
Caused by: java.lang.IllegalArgumentException: Make sure the primary key fields 
[id] are not empty, or check whether the headers or field_mapping are 
configured correctly
        at 
com.google.common.base.Preconditions.checkArgument(Preconditions.java:164) 
~[guava-30.0-jre.jar:?]
        at 
org.apache.hugegraph.util.E.checkArgument(E.java:52) 
~[hugegraph-common-1.5.0.jar:1.5.0]
        at 
org.apache.hugegraph.loader.builder.ElementBuilder$VertexPkKVPairs.extractFromEdge(ElementBuilder.java:682)
 ~[hugegraph-loader-1.7.0.jar:1.7.0]
        at 
org.apache.hugegraph.loader.builder.EdgeBuilder.build(EdgeBuilder.java:88) 
~[hugegraph-loader-1.7.0.jar:1.7.0]
        at 
org.apache.hugegraph.loader.task.ParseTaskBuilder.lambda$buildTask$0(ParseTaskBuilder.java:103)
 ~[hugegraph-loader-1.7.0.jar:1.7.0]
        ... 8 more
03:20:58.764 [loader] ERROR org.apache.hugegraph.loader.task.ParseTaskBuilder - 
Parse EDGE error
org.apache.hugegraph.loader.exception.ParseException: Make sure the primary key 
fields [id] are not empty, or check whether the headers or field_mapping are 
configured correctly
        at 
org.apache.hugegraph.loader.task.ParseTaskBuilder.lambda$buildTask$0(ParseTaskBuilder.java:124)
 ~[hugegraph-loader-1.7.0.jar:1.7.0]
        at 
org.apache.hugegraph.loader.task.ParseTaskBuilder$ParseTask.get(ParseTaskBuilder.java:163)
 ~[hugegraph-loader-1.7.0.jar:1.7.0]
        at 
org.apache.hugegraph.loader.HugeGraphLoader.executeParseTask(HugeGraphLoader.java:816)
 ~[hugegraph-loader-1.7.0.jar:1.7.0]
        at 
org.apache.hugegraph.loader.HugeGraphLoader.loadStruct(HugeGraphLoader.java:789)
 ~[hugegraph-loader-1.7.0.jar:1.7.0]
        at 
org.apache.hugegraph.loader.HugeGraphLoader.lambda$asyncLoadStruct$14(HugeGraphLoader.java:734)
 ~[hugegraph-loader-1.7.0.jar:1.7.0]
        at 
java.util.concurrent.CompletableFuture$AsyncRun.run(Unknown Source) ~[?:?]
        at 
java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) ~[?:?]
        at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) ~[?:?]
        at java.lang.Thread.run(Unknown Source) ~[?:?]
Caused by: java.lang.IllegalArgumentException: Make sure the primary key fields 
[id] are not empty, or check whether the headers or field_mapping are 
configured correctly
        at 
com.google.common.base.Preconditions.checkArgument(Preconditions.java:164) 
~[guava-30.0-jre.jar:?]
        at 
org.apache.hugegraph.util.E.checkArgument(E.java:52) 
~[hugegraph-common-1.5.0.jar:1.5.0]
        at 
org.apache.hugegraph.loader.builder.ElementBuilder$VertexPkKVPairs.extractFromEdge(ElementBuilder.java:682)
 ~[hugegraph-loader-1.7.0.jar:1.7.0]
        at 
org.apache.hugegraph.loader.builder.EdgeBuilder.build(EdgeBuilder.java:88) 
~[hugegraph-loader-1.7.0.jar:1.7.0]
        at 
org.apache.hugegraph.loader.task.ParseTaskBuilder.lambda$buildTask$0(ParseTaskBuilder.java:103)
 ~[hugegraph-loader-1.7.0.jar:1.7.0]
        ... 8 more


         原始邮件
         
       
发件人:dosubot[bot] ***@***.***>
发件时间:2025年12月11日 11:10
收件人:apache/incubator-hugegraph ***@***.***>
抄送:wangzhewwzz ***@***.***>, Mention ***@***.***>
主题:Re: [apache/incubator-hugegraph] 关于电网拓扑数据导入 (Discussion #2917)




你的导入“无报错但部分设备没有连接关系”,根本原因是 struct_1.json 的 edges 配置 field_mapping 写成了 "from": 
"id", "to": "id",而不是 "from": "from", "to": "to"。这样 loader 会把 edge CSV 的 id 
列当作边属性导入,导致边无法正确关联顶点,或者被静默跳过,最终部分设备没有连接关系(如 BDZ-3002、XLD-3445、XLD-3380 等)。

具体问题分析:

field_mapping 错误:必须是 "from": "from", "to": "to",否则 loader 取不到顶点主键 id,边全部失效。

边标签 .properties() 必须声明实际用到的属性,如有 source_label/target_label 就要写上,否则 loader 
也会报错或跳过。

CSV 文件有重复行:如 vertex_linesegment-1.csv、vertex_stationhouse-1.csv 等有多行重复 
id,会导致顶点覆盖或边关联异常。

部分设备没有连接关系:因为边数据和顶点数据的 id 不一致、重复、空行或 field_mapping 错误,导致边无法关联到这些设备。

修正建议:

1. schema_1.groovy(只保留必要属性,边标签声明 source_label/target_label)
// 属性定义 schema.propertyKey("id").asText().ifNotExist().create(); 
schema.propertyKey("name").asText().ifNotExist().create(); 
schema.propertyKey("objectType").asText().ifNotExist().create(); 
schema.propertyKey("objectHandle").asText().ifNotExist().create(); 
schema.propertyKey("deviceType").asText().ifNotExist().create(); 
schema.propertyKey("internalEndpointNo").asInt().ifNotExist().create(); 
schema.propertyKey("terminalNo").asInt().ifNotExist().create(); 
schema.propertyKey("usage").asText().ifNotExist().create(); 
schema.propertyKey("powerFlowDirection").asInt().ifNotExist().create(); 
schema.propertyKey("belongSubstation").asText().ifNotExist().create(); 
schema.propertyKey("belongFeeder").asText().ifNotExist().create(); 
schema.propertyKey("source_label").asText().ifNotExist().create(); 
schema.propertyKey("target_label").asText().ifNotExist().create(); // 顶点标签 
schema.vertexLabel("Substation").properties("id", "name", "objectType", 
"objectHandle", "deviceType", "internalEn
 dpointNo", "terminalNo", "usage", "powerFlowDirection", "belongSubstation", 
"belongFeeder").primaryKeys("id").ifNotExist().create(); 
schema.vertexLabel("LineSegment").properties("id", "name", "objectType", 
"objectHandle", "deviceType", "internalEndpointNo", "terminalNo", "usage", 
"powerFlowDirection", "belongSubstation", 
"belongFeeder").primaryKeys("id").ifNotExist().create(); 
schema.vertexLabel("LineSwitch").properties("id", "name", "objectType", 
"objectHandle", "deviceType", "internalEndpointNo", "terminalNo", "usage", 
"powerFlowDirection", "belongSubstation", 
"belongFeeder").primaryKeys("id").ifNotExist().create(); 
schema.vertexLabel("StationHouse").properties("id", "name", "objectType", 
"objectHandle", "deviceType", "internalEndpointNo", "terminalNo", "usage", 
"powerFlowDirection", "belongSubstation", 
"belongFeeder").primaryKeys("id").ifNotExist().create(); // 
边标签(每种类型对每种类型都定义一条边,便于扩展和双向连接) schema.edgeLabel("Substation2
 
LineSegment").sourceLabel("Substation").targetLabel("LineSegment").properties("source_label",
 "target_label").ifNotExist().create(); 
schema.edgeLabel("LineSegment2Substation").sourceLabel("LineSegment").targetLabel("Substation").properties("source_label",
 "target_label").ifNotExist().create(); 
schema.edgeLabel("LineSegment2StationHouse").sourceLabel("LineSegment").targetLabel("StationHouse").properties("source_label",
 "target_label").ifNotExist().create(); 
schema.edgeLabel("StationHouse2LineSegment").sourceLabel("StationHouse").targetLabel("LineSegment").properties("source_label",
 "target_label").ifNotExist().create(); 
schema.edgeLabel("LineSegment2LineSegment").sourceLabel("LineSegment").targetLabel("LineSegment").properties("source_label",
 "target_label").ifNotExist().create(); 
schema.edgeLabel("LineSegment2LineSwitch").sourceLabel("LineSegment").targetLabel("LineSwitch").properties("source_label",
 "target_label").ifNotExist().create(); 
schema.edgeLabel("LineSwitch2LineSegment").s
 ourceLabel("LineSwitch").targetLabel("LineSegment").properties("source_label", 
"target_label").ifNotExist().create(); 
schema.edgeLabel("StationHouse2LineSwitch").sourceLabel("StationHouse").targetLabel("LineSwitch").properties("source_label",
 "target_label").ifNotExist().create(); 
schema.edgeLabel("LineSwitch2StationHouse").sourceLabel("LineSwitch").targetLabel("StationHouse").properties("source_label",
 "target_label").ifNotExist().create();


2. struct_1.json(edges 部分 field_mapping 必须为 from/to,且 value_mapping 精确过滤)
{   "vertices": [     {       "label": 
"Substation",       "input": {        
 "type": "file",         "path": 
"vertex_substation-1.csv",         "format": "CSV",    
     "header": ["id", "name", "objectType", "objectHandle", 
"deviceType", "internalEndpointNo", "terminalNo", "usage", 
"powerFlowDirection", "belongSubstation", "belongFeeder"],      
   "charset": "UTF-8"       },      
 "null_values": ["NULL", "null"]     },     // 
其他顶点类型同理   ],   "edges": [     {      
 "label": "Substation2LineSegment",       "source": 
["from"],       "target": ["to"],       "input": 
{         "type": "file",        
 "path": "power_edges_to.csv",         "form
 at": "CSV",         "header": ["id", "from", "to", 
"label", "source_label", "target_label"]       },      
 "field_mapping": { "from": "from", "to": "to" },      
 "value_mapping": {         "label": { "CONNECTED_TO": 
"Substation2LineSegment" },         "source_label": { 
"Substation": "Substation" },         "target_label": { 
"LineSegment": "LineSegment" }       }     },    
 {       "label": "LineSegment2Substation",      
 "source": ["from"],       "target": ["to"],      
 "input": { "type": "file", "path": "power_edges_to.csv", "format": "CSV", 
"header": ["id", "from", "to", "label", "source_label", "target_label"] },  
     "field_mapping": { "from": "from", "to": "to" },    
   "value_mapping": {         "label": { "CON
 NECTED_TO": "LineSegment2Substation" },        
 "source_label": { "LineSegment": "LineSegment" },        
 "target_label": { "Substation": "Substation" }       }  
   },     // 其余边类型同理,确保每种类型的连接都写一段,且 value_mapping 精确过滤  
   // ...   ] }


3. 重点排查和修正建议

所有 vertex_xxx.csv、power_edges_to.csv 文件必须无重复行、无空行、无多余空格,id 唯一且和边数据完全一致。

struct_1.json 的 edges 部分 field_mapping 必须全部为 { "from": "from", "to": "to" },不能有 
id。

每个 edgeLabel 的 value_mapping 必须精确过滤 label、source_label、target_label,且和 
schema.groovy 的 sourceLabel/targetLabel 完全一致。

如果某些设备没有连接关系,优先检查: 

该设备 id 是否在所有相关 vertex_xxx.csv 只出现一次且无空格。

该设备 id 是否在 power_edges_to.csv 的 from/to 列出现,且 source_label/target_label 正确。

struct_1.json 是否有对应 edgeLabel 配置,且 value_mapping 正确。

如有重复顶点或边,建议先 deduplicate(去重)所有 CSV 文件。


4. 边数量异常的原因

你的 power_edges_to.csv 里每条边正反都写了(A→B、B→A),且 struct.json 里每种 edgeLabel 
又都配置了一遍,导致边数量比顶点多很多。只要数据无重复、配置无误,这不是问题。


5. 设备无连接关系的根本原因

99% 是因为 struct.json 的 field_mapping 写成了 { "from": "id", "to": "id" } 或 
value_mapping 不精确,导致边被跳过或关联不到顶点。

还有可能是顶点 CSV 有重复、空行、主键不一致、隐藏字符等问题。


如需完整修正版 struct_1.json 和 schema_1.groovy,可以参考上面模板,按你的实际数据类型和连接关系补全所有 edgeLabel 和 
value_mapping。只要严格按上述方式配置,所有设备的连接关系都能导入且无报错。

如还有具体设备无连接,建议贴出该设备在所有相关 CSV 的原始行和 struct.json 的对应 edgeLabel 配置,我可以帮你逐条定位。

To reply, just mention @dosu.


How did I do? Good | Irrelevant | Incorrect | Verbose | 
Hallucination | Report 🐛 | Other

   

—
Reply to this email directly, view it on GitHub, or unsubscribe.
You are receiving this because you were mentioned.

GitHub link: 
https://github.com/apache/incubator-hugegraph/discussions/2917#discussioncomment-15226264

----
This is an automatically sent email for [email protected].
To unsubscribe, please send an email to: [email protected]

Reply via email to