nebula exchange 能否用于数据更新?

exchange 3.5.0
nebula:3.5.0

nebula graph中已经存储了当前的数据,现在我希望对其中的一个tag下的大量节点的某一个属性进行更新,此时我能否在原先parquet的基础上,更新该属性,再将该parquet通过exchange导入graph中?

例如现在我有1亿个person节点,我希望将所有person节点下的age属性增大1岁,能否在源文件上进行修改,再通过exchange导入到nebula graph中?

我觉得应该是可行的,:thinking: 顺便你的版本是不对齐的 cc @nicole 我理解对么?

1 个赞

这里是我写错了,exchange用的也是3.5.0版本的。
是将配置文件中的tag.writeMode改成update就可以了吗?那对于需要源文件有什么要求呢?例如我只想要更新age这一个属性,对应的parquet中只有两列vid和age就可以了吗?还是原先的属性都要保留?

如果你的源文件只有 age列的值变化,你可以继续使用insert模式,insert时会将你老数据覆盖的。

用update也可以实现,只要指定vid和age就可以,但update性能没有insert好。

2 个赞

那如果我想要通过一个新文件对内容进行更新,新文件里只有vid和age两列,是不是就需要用update了

是的。

各位大佬们,这里有个问题,我使用update的writeMode去更新tag,使用的更新文件中只有vid和需要更新的属性两列,但是更新完了之后除了更新的属性之外,其他的属性都消失了,这是为啥,是我写的不对吗?这是我的exchange的conf文件,能帮我看看问题在哪吗?

{
    # 配置Spark相关
    # Spark configuration
    spark:{
        app:{
            name: Nebula Exchange 
        }

    }

# nebula graph相关配置
    nebula:{
        address:{
            graph:[""]
            meta:[""]
        }

        user:root
        pswd:


        # 指定图空间
        space: yc3
        connection:{
            timeout: 3000
            retry: 3
        }
        execution:{
            retry:1
        }
        error:{
            max: 16
            output: /tmp/errors
        }
        rate:{
            limit: 1024
            timeout: 1000
        }
    }

   tags:[
    writeMode : update
            {
            name: Person
            type:{
                source:parquet
                sink:client
            }
            path:""
            fields:[
                cc
                    ]
            nebula.fields:[
                on_cc
            ]
            writeMode: update
            vertex:vid
            separator: ","
            batch: 256
            partition: 16
        }

                    {
            name: Car
            type:{
                source:parquet
                sink:client
            }
            path:""
            fields:[
                cc
                    ]
            nebula.fields:[
                on_cc
            ]
            writeMode: update
            vertex:vid
            separator: ","
            batch: 256
            partition: 16
        }

                    {
            name: Claim
            type:{
                source:parquet
                sink:client
            }
            path:""
            fields:[
                cc
                    ]
            nebula.fields:[
                on_cc
            ]
            writeMode: update
            vertex:vid
            separator: ","
            batch: 256
            partition: 16
        }

                    {
            name: Phone
            type:{
                source:parquet
                sink:client
            }
            path:""
            fields:[
                cc
                    ]
            nebula.fields:[
                on_cc
            ]
            writeMode: update
            vertex:vid
            separator: ","
            batch: 256
            partition: 16
        }
   ]
}

使用的update模式,但是更新完之后的数据全部变成null了

重复提问,以上面的链接回复为准。