如何设计Hive到Nebula的增量更新方式?

如何对Nebula中存储的顶点或边进行增量更新?

假设Nebula中存储了a,b两类点及其相关边,初始全量从Hive表导入时,导入了a, b, a-b三张表。在实际生产环境中 a, b, a-b所包含的属性每天都可能被更新,那么如何每天对Nebula中的数据进行增量更新呢?

现在想到的办法是比较 T 和 T+1 日数据,若某一行记录中的某些属性发生更新,则将该行记录筛选出来覆盖更新至Nebula。

不知道这样的方法是否可行,若可行的话是否是最优的方法呢?

1 个赞

这个方法当然是可行的,抛开数据库类型而言,这应该是一个常规的做法。

除此以外你导数据可以使用我们的提供的数据导入工具,可能会帮你提升一些效率:https://docs.nebula-graph.com.cn/manual-CN/3.build-develop-and-administration/5.storage-service-administration/data-import/import-csv-file/ :handshake:

更新一下,这是我们最新的导入工具,你可以对比文档一起参考:https://github.com/vesoft-inc/nebula-java/tree/master/tools/exchange :handshake:

如果数据源在Hive的话,我能想到就是Hive里面先算个差量吧——可能计算量有点大,要算出 删除、修改、增加

属性更新相对好处理,点的删除比较费事(否则会有悬挂边)。

也可以试试TTL,也许自动过期也是个办法——边上有个rank字段可以使用,但是点上的时间我没想好怎么处理。

也可以新建一个space。
这样本质上每天可能就是一个全量导入。

主要看看差量和全量哪个更大吧。