加载 Neptune 图中现有的边 id

问题描述 投票:0回答:1

我正在尝试在 python 中运行一个 python 作业,该作业从 csv 文件批量加载 Neptune 图表。该作业通过使用请求参数的curl命令加载这些文件(如下所示)。然而,加载失败,因为图中已存在边 id。

{
    "mode": "AUTO",
    "updateSingleCardinalityProperties": "TRUE",
    "parallelism": "OVERSUBSCRIBE",
    "source": <file pathe>,
    "failOnError": "FALSE",
    "region": <region>,
    "format": "csv",
    "queueRequest": "TRUE",
    "iamRoleArn": <IAM role>,
}

为了避免这些失败,我尝试在加载图形之前查询边缘 id,但我需要加载的数据非常大,并且该作业需要一天多的时间才能完成。是否有另一种解决方案,可以覆盖这些边,或者如果边 id 已存在,则忽略新边?

gremlin amazon-neptune gremlinpython
1个回答
0
投票

仅当您尝试创建具有相同 ID 但不同边缘标签的边缘时,才会发生有关重复边缘 ID 的错误。

有几种方法可以解决这个问题:

  1. 如果您不关心边缘 ID 是什么(如果您在将它们写入 Neptune 之前使用 UUID 之类的东西生成这些 ID),那么您可能需要考虑让 Neptune 为您分配这些 ID。 使用 Gremlin CSV 批量加载格式无法实现此目的,但可以使用 openCypher CSV 批量加载格式:https://docs.aws.amazon.com/neptune/latest/userguide/bulk-load-tutorial-format- opencypher.html。 无论您使用哪种格式加载数据,都可以使用 Gremlin 或 openCypher 查询数据(它们在相同数据上是可互操作的)。

    使用 openCypher CSV 批量加载格式时,您可以在发出批量加载作业时使用

    userProvidedEdgeIds
    参数。 将其设置为
    False
    ,Neptune 将为您生成 ID。

  2. 或者,您可以发出整个批量加载,并允许加载器累积由重复边缘 ID 生成的错误。 将

    failOnError
    参数设置为 false 时,Neptune 将在收集错误时继续加载剩余数据。 作业完成后,您可以返回并查询作业日志中的错误 (https://docs.aws.amazon.com/neptune/latest/userguide/load-api-reference-error-logs-examples .html)并单独解决重复的 ID(可能仅通过查询或创建新的 CSV 文件并发出另一个批量加载作业)。

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.