基于pyspark写入nebula,是否支持upsert

  • nebula 版本:3.1
  • 部署方式:分布式
  • 安装方式:RPM
  • 是否为线上版本:Y
  • 硬件信息
    • 磁盘 SSD
    • CPU、内存信息
  • 问题的具体描述

现在有个场景,需要pyspark写数据到nebula,对已经存在的点,需要做update,而不存在的需要insert。但目前好像不支持upsert这种writemode,请问下,有什么解决方案吗
另外,可以附上支持的所有option吗

https://github.com/vesoft-inc/nebula-spark-connector/blob/302c90ae8491a1f10e76f771d1b7de4d9194227e/nebula-spark-connector/src/main/scala/com/vesoft/nebula/connector/writer/NebulaEdgeWriter.scala#L83-L89

看起来是有 insert, update, delete 三种。不过感觉上你用 insert 一把梭就行。

我们是支持 upsert 语法的。
https://docs.nebula-graph.com.cn/3.3.0/3.ngql-guide/12.vertex-statements/3.upsert-vertex/
还有 insert vertex 的话是覆盖性写入的,一个点可以多次插入属性值,以最后一次为准。

insert不能满足。比如,库里的某个确定的点有name这个属性值,而新来的一批数据里,没有name这个值,而业务需求是,已有的name值不能被新来的数据被覆盖成空,即,更新字段,若新数据无值的话,就不更新。而使用update的话,如果库里没点的话,就会更新失败,而期望是,插入

这个是单机的。pyspark的option没有upsert,会直接报错

或许你可以考虑先读出来再写入。

这个目前upsert是不支持的哦,你的需求应该upsert也不行

是的,试了下,读出来再处理,是可行的,就是不清楚吞吐量如何

此话题已在最后回复的 30 天后被自动关闭。不再允许新回复。