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

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

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

此示例演示如何将数据加载到 Amazon Neptune 中。除非另有说明,否则您必须在与您的 Neptune 数据库实例相同的亚马逊虚拟私有云 (EC2) 中的亚马逊弹性计算云 (AmazonVPC) 实例中执行这些步骤。

数据加载示例的先决条件

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

  • 一个 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角色,其IAM策略允许访问 S3 存储桶中的数据文件。此策略必须授予读取和列出权限。

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

    注意

    Neptune Load API 只需要对数据文件具有读取权限。该IAM策略不需要允许对整个存储桶的写入权限或访问权限。

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

创建 Amazon S3 VPC 终端节点

Neptune 加载器需要一个适用于 Amazon S3 的VPC终端节点。

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

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

  3. 选择 Create Endpoint(创建端点)。

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

    注意

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

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

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

  7. 选择 Create Endpoint(创建端点)。

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

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

    您可以使用以下 AWS 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

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

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

    format参数可以是以下任何值:对csv于 Gremlin、for、opencypher或openCypher、ntriplesnquadsturtle、和 rdfxml for。RDF有关其他参数的信息,请参阅Neptune 加载程序命令

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

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

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

    • 美国东部(弗吉尼亚州北部):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

    • 中东 (UAE): me-central-1

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

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

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

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

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

    • 亚太地区(大阪):ap-northeast-3

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

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

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

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

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

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

    • AWS 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 CSV openCypher 属性图表的格式 (opencypher)

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

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

    • RDF/XML(rdfxml) 格式为RDF/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 Loader 获取状态 API

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

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

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

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

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