示例:将数据加载到 Neptune 数据库实例中 - Amazon Neptune
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

示例:将数据加载到 Neptune 数据库实例中

此示例演示如何将数据加载到 Amazon Neptune 中。除非另有说明,否则您必须在与 Neptune 数据库实例相同的 Amazon Virtual Private Cloud (VPC) 中的 Amazon Elastic Compute Cloud (Amazon EC2) 实例中执行这些步骤。

数据加载示例的先决条件

在开始之前,您必须具有以下内容:

  • 一个 Neptune 数据库实例。

    有关启动 Neptune 数据库实例的信息,请参阅创建新的 Neptune 数据库集群

  • 将数据文件放入其中的 Amazon Simple Storage Service (Amazon S3) 桶。

    您可以使用现有存储段。如果没有 S3 桶,请参阅 Amazon S3 入门指南中的创建桶

  • 为以 Neptune 加载程序支持的格式之一加载的数据绘制图形:

    如果您使用 Gremlin 来查询图表,Neptune 可以加载 comma-separated-values (CSV) 格式的数据,如中所述。Gremlin 加载数据格式

    如果您使用 openCypher 查询图形,Neptune 还可以按特定于 openCypher 的 CSV 格式加载数据,如openCypher 数据的加载格式中所述。

    如果您使用 SPARQL,则 Neptune 可加载采用大量 RDF 格式的数据,如RDF 加载数据格式中所述。

  • Neptune 数据库实例要代入的 IAM 角色,此角色具有允许访问 S3 桶中的数据文件的 IAM policy。此策略必须授予读取和列出权限。

    有关创建对 Amazon S3 具有访问权限的角色,然后将其与 Neptune 集群关联的信息,请参阅先决条件:IAM 角色和 Amazon S3 访问权限

    注意

    Neptune Load API 只需要对数据文件的读取访问权限。IAM policy 不需要允许对整个桶的写入访问权限或访问权限。

  • Amazon S3 VPC 端点。想要了解更多信息,请参阅创建 Amazon S3 VPC 端点部分。

创建 Amazon S3 VPC 端点

Neptune 加载程序需要 Amazon S3 的 VPC 端点。

设置 Amazon S3 访问权限
  1. 登录 Amazon Web Services Management Console 并打开亚马逊 VPC 控制台,网址为 https://console.aws.amazon.com/vpc/

  2. 在左侧导航窗格中,选择终端节点

  3. 选择创建端点

  4. 选择 Service Name (服务名称) com.amazonaws.region.s3

    注意

    如果此处的区域不正确,请确保控制台区域正确。

  5. 选择包含您的 Neptune 数据库实例的 VPC。

  6. 选中与子网 (与集群相关) 关联的路由表旁边的复选框。如果只有一个路由表,则必须选中该框。

  7. 选择创建端点

有关创建端点的信息,请参阅《Amazon VPC 用户指南》中的 VPC 端点。有关 VPC 端点的限制的信息,请参阅 Amazon S3 的 VPC 端点

将数据加载到 Neptune 数据库实例中
  1. 将数据文件复制到 Amazon S3 桶。S3 存储桶必须与加载数据的集群位于同一 Amazon 区域。

    您可以使用以下 Amazon CLI 命令将文件复制到存储桶。

    注意

    此命令不需要从 Amazon EC2 实例运行。

    aws s3 cp data-file-name s3://bucket-name/object-key-name
    注意

    在 Amazon S3 中,对象键名称是文件的整个路径,其中包含文件名。

    示例:在命令 aws s3 cp datafile.txt s3://examplebucket/mydirectory/datafile.txt 中,对象键名称为 mydirectory/datafile.txt

    或者,您可以使用将文件上传 Amazon Web Services Management Console 到 S3 存储桶。请通过以下网址打开 Amazon S3 控制台:https://console.aws.amazon.com/s3/,然后选择桶。在左上角,选择 Upload (上传) 以上传文件。

  2. 从命令行窗口中,使用端点、Amazon S3 路径、格式和 IAM 角色 ARN 的正确值输入以下内容,以运行 Neptune 加载程序。

    format 参数可以是下列任意值:csv(对于 Gremlin),opencypher(对于 openCypher),或者 ntriplesnquadsturtlerdfxml(对于 RDF)。有关其他参数的信息,请参阅Neptune 加载程序命令

    有关查找 Neptune 数据库实例的主机名的信息,请参阅连接到 Amazon Neptune 端点部分。

    区域参数必须与集群和 S3 存储桶的区域匹配。

    亚马逊 Neptune 在以下 Amazon 地区上市:

    • 美国东部(弗吉尼亚州北部):us-east-1

    • 美国东部(俄亥俄州):us-east-2

    • 美国西部(北加利福尼亚):us-west-1

    • 美国西部(俄勒冈州):us-west-2

    • 加拿大(中部):ca-central-1

    • 南美洲(圣保罗):sa-east-1

    • 欧洲地区(斯德哥尔摩):eu-north-1

    • 欧洲地区(爱尔兰):eu-west-1

    • 欧洲地区(伦敦):eu-west-2

    • 欧洲地区(巴黎):eu-west-3

    • 欧洲地区(法兰克福):eu-central-1

    • 中东(巴林):me-south-1

    • 中东(阿联酋):me-central-1

    • 以色列(特拉维夫):il-central-1

    • 非洲(开普敦):af-south-1

    • 亚太地区(香港):ap-east-1

    • 亚太地区(东京):ap-northeast-1

    • 亚太地区(首尔):ap-northeast-2

    • 亚太地区(新加坡):ap-southeast-1

    • 亚太地区(悉尼):ap-southeast-2

    • 亚太地区(孟买):ap-south-1

    • 中国(北京):cn-north-1

    • 中国(宁夏):cn-northwest-1

    • Amazon GovCloud (美国西部):us-gov-west-1

    • Amazon GovCloud (美国东部):us-gov-east-1

    curl -X POST \ -H 'Content-Type: application/json' \ https://your-neptune-endpoint:port/loader -d ' { "source" : "s3://bucket-name/object-key-name", "format" : "format", "iamRoleArn" : "arn:aws:iam::account-id:role/role-name", "region" : "region", "failOnError" : "FALSE", "parallelism" : "MEDIUM", "updateSingleCardinalityProperties" : "FALSE", "queueRequest" : "TRUE", "dependencies" : ["load_A_id", "load_B_id"] }'

    有关创建 IAM 角色并将其与 Neptune 集群关联的信息,请参阅先决条件:IAM 角色和 Amazon S3 访问权限

    注意

    有关加载请求参数的详细信息,请参阅Neptune 加载程序请求参数)。简而言之:

    source 参数接受指向单个文件或文件夹的 Amazon S3 URI。如果指定文件夹,Neptune 将加载该文件夹中的每个数据文件。

    文件夹可包含多个顶点文件和多个边缘文件。

    URI 可以采用以下任意格式。

    • s3://bucket_name/object-key-name

    • https://s3.amazonaws.com/bucket_name/object-key-name

    • https://s3-us-east-1.amazonaws.com/bucket_name/object-key-name

    format 可以是下列项之一:

    • Gremlin 属性图的 Gremlin CSV 格式 (csv)

    • openCypher 属性图的 openCypher CSV 格式 (opencypher)

    • RDF 的 N -Triples (ntriples) 格式 / SPARQL

    • RDF 的 N-Quads (nquads) 格式 / SPARQL

    • RDF 的 RDF/XML (rdfxml) 格式 / SPARQL

    • RDF 的 Turtle (turtle) 格式 / SPARQL

    可选 parallelism 参数,您可用于限制批量加载进程中使用的线程数。它可以设置为 LOWMEDIUMHIGHOVERSUBSCRIBE

    updateSingleCardinalityProperties 设置为 "FALSE" 时,如果在为边缘或单基数顶点属性加载的源文件中提供了多个值,则加载程序将返回错误。

    如果已有加载作业正在运行,则将 queueRequest 设置为 "TRUE" 会将加载请求放入队列中。

    dependencies 参数使加载请求的执行取决于成功完成已放入队列中的一个或多个加载作业。

  3. Neptune 加载程序将返回允许检查状态或取消加载过程的任务 id,例如:

    { "status" : "200 OK", "payload" : { "loadId" : "ef478d76-d9da-4d94-8ff1-08d9d4863aa5" } }
  4. 步骤 3 中输入以下命令以获取具有 loadId 的加载的状态:

    curl -G 'https://your-neptune-endpoint:port/loader/ef478d76-d9da-4d94-8ff1-08d9d4863aa5'

    如果加载的状态列出错误,则可以请求更详细的状态和错误的列表。有关更多信息以及示例,请参阅 Neptune 加载程序获取状态 API

  5. (可选) 取消 Load 任务。

    步骤 3 中输入以下命令以通过任务 id Delete 加载程序任务:

    curl -X DELETE 'https://your-neptune-endpoint:port/loader/ef478d76-d9da-4d94-8ff1-08d9d4863aa5'

    DELETE 命令将在成功取消后返回 HTTP 代码 200 OK

    不会回滚已完成加载的加载任务中文件的数据。数据仍保留在 Neptune 数据库实例中。