【问题标题】:create AWS Neptune graph from raw csv从原始 csv 创建 AWS Neptune 图
【发布时间】:2022-12-28 16:56:02
【问题描述】:

我看到了很多关于如何将顶点和边格式的 csv (Gremlin) 数据加载到 AWS Neptune 中的教程。由于很多原因,我无法为数据加载创建顶点和边。相反,我只有原始 csv 文件,其中每一行都是一条记录(例如一个人)。

如何从笔记本界面的 Neptune 中原始 csv 的每一行记录创建节点和关系?

【问题讨论】:

  • 最简单的方法很可能是编写几行 Python 来读取 CSV 并生成 Gremlin 或 openCypher 来创建节点。你能提供原始 CSV 的样本吗?另一种方法是将 CSV 转换为具有批量加载程序期望的标头。您甚至可以在上面运行 CSV-gremlin 工具。
  • @Kelvin 感谢 cmets。我们不能使用 vertices-edges Gremlin bulk loader 的原因是,我们想实现实时摄取。想象一下,我们的平台每分钟都会添加新内容,需要将它们转换为图形节点。我们认为批量加载行不通。你能举一些用opencypher转换逐行记录(带标题)的例子吗?
  • 您能否分享 CSV 数据的外观示例?
  • 数据示例并不重要。让我们以 Neo4J 的电影数据库为例。有 actors.csv 和 movies.csv。假设我一次只能从两个 csv 文件流式传输 10 行,如何在 Neptune 中构建图形数据库?

标签: amazon-neptune graphdb opencypher


【解决方案1】:

鉴于您提到要在笔记本中执行此操作,下面的示例都是从 Jupyter 笔记本中运行的。我手头没有你提到的数据集,所以让我们在 Notebook 单元格中制作一个简单的数据集。

%%bash
echo "code,city,region
AUS,Austin,US-TX
JFK,New York,US-NY" > test.csv

然后我们可以使用一个简单的单元格为该 CSV 文件中包含的节点生成 openCypher CREATE 步骤,例如:

import csv
with open('test.csv', newline='') as csvfile:
    reader = csv.DictReader(csvfile, escapechar="\")
    query = ""
    for row in reader:
        s = "CREATE (:Airport {"
        for k in row:
            s += f'{k}:"{row[k]}", '
        s = s[:-2] + '})
'
        query += s 
    print(query)

哪个产量

CREATE (:Airport {code:"AUS", city:"Austin", region:"US-TX"})
CREATE (:Airport {code:"JFK", city:"New York", region:"US-NY"})

最后让笔记本occell magic 为我们运行该查询

ipython = get_ipython()
magic = ipython.run_cell_magic
magic(magic_name = "oc", line='', cell=query)

验证查询是否有效

%%oc
MATCH (a:Airport)
RETURN a.code, a.city

返回:

    a.code     a.city
1   AUS        Austin
2   JFK        New York

有很多方法可以做到这一点,但如果您想留在笔记本中,这是一种简单的方法。鉴于您的问题没有太多细节或到目前为止您尝试过的示例,希望这能给您一些指示。

【讨论】:

    【解决方案2】:

    我也在想办法解决这个问题。您现在有可行的解决方案吗? 提前致谢。

    梅艳芳

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-10-20
      • 2017-06-16
      • 1970-01-01
      • 2019-03-08
      • 2013-10-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多