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

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

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

此示例演示如何将数据加载到 Amazon Neptune 中。除非另有说明,否则必须从与 Neptune 数据库实例位于同一个 Amazon Virtual Private Cloud (VPC) 中的 Amazon Elastic Compute Cloud (Amazon EC2) 实例执行以下步骤。

数据加载示例的先决条件

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

  • Neptune 数据库实例。

    有关启动 Neptune 数据库实例的信息,请参阅使用创建新 Neptune 数据库集群Amazon CloudFormation或手动.

  • 将数据文件存储在中的 Amazon Simple Storage Service (Amazon S3) 存储桶。

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

  • 采用 Neptune 加载程序支持的格式之一加载的图形数据:

    如果您使用 Gemlin 查询图表,则 Neptune 可以逗号分隔值加载数据 (CSV) 格式,如中所述Gremlin 加载数据格式.

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

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

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

    注意

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

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

创建 Amazon S3 VPC 终端节点

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

设置 Amazon S3 访问权限

  1. 登录到 Amazon Web Services Management Console,然后通过以下网址打开 Amazon VPC 控制台:https://console.aws.amazon.com/vpc/

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

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

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

    注意

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

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

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

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

有关创建终端节点的信息,请参阅。VPC 终端节点中的Amazon VPC User Guide. 有关 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. 从命令行窗口中,输入以下内容以运行 Neptune 加载程序。替换终端节点、Amazon S3 路径、格式和访问密钥的值。

    这些区域有:format参数可以是以下任意值:csv(Gremlin),ntriplesnquadsturtle, 和rdfxml(RDF)。有关其他参数的信息,请参阅Neptune 加载程序命令

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

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

    Amazon 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

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

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

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

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

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

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

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

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

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

    • AmazonGovCloud(美国东部):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 可以是下列项之一:

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

    • 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. 输入以下命令以通过获取加载状态loadId步骤 3

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

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

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

    输入以下信息Delete任务的加载程序任务id步骤 3

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

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

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