aws neptune 批量加载并行化
aws neptune bulk load parallelization
我正在尝试将 624,118,983 条记录插入到 1000 个文件中,需要 35 个小时才能将所有内容加载到海王星中,这非常慢。
我已经用 2 个实例配置了 db.r5.large 实例。
我在 S3 存储桶中存储了 1000 个文件。
我有一个加载请求指向包含 1000 个文件的 S3 存储桶文件夹。
当我获得加载状态时,我得到低于响应。
{
"status" : "200 OK",
"payload" : {
"feedCount" : [
{
"LOAD_NOT_STARTED" : 640
},
{
"LOAD_IN_PROGRESS" : 1
},
{
"LOAD_COMPLETED" : 358
},
{
"LOAD_FAILED" : 1
}
],
"overallStatus" : {
"fullUri" : "s3://myntriplesfiles/ntriple-folder/",
"runNumber" : 1,
"retryNumber" : 0,
"status" : "LOAD_IN_PROGRESS",
"totalTimeSpent" : 26870,
"startTime" : 1639289761,
"totalRecords" : 224444549,
"totalDuplicates" : 17295821,
"parsingErrors" : 1,
"datatypeMismatchErrors" : 0,
"insertErrors" : 0
}
}
我在这里看到 LOAD_IN_PROGRESS 始终为 1。这意味着海王星不会尝试并行加载多个文件。
我如何告诉海王星以某种并行化方式加载 1000 个文件,例如并行化因子为 10。
我是否缺少任何配置?
这就是我使用批量加载的方式 api。
curl -X POST -H 'Content-Type: application/json' https://neptune-hostname:8182/loader -d '
{
"source" : "s3://myntriplesfiles/ntriple-folder/",
"format" : "nquads",
"iamRoleArn" : "my aws arn values goes here",
"region" : "us-east-2",
"failOnError" : "FALSE",
"parallelism" : "HIGH",
"updateSingleCardinalityProperties" : "FALSE",
"queueRequest" : "FALSE"
}'
请指教
Amazon Neptune 批量加载程序不会并行加载多个文件,但会将每个文件的内容分配给写入器实例上的可用工作线程数(受限于您拥有 parallelism
属性 在加载命令上设置)。如果在加载期间没有其他待处理的写入,您可以将该字段设置为 OVERSUBSCRIBE
,这将使用所有可用的工作线程。其次,较大的文件优于较小的文件,因为这为工作线程提供了更多它们可以并行执行的操作。第三,仅在加载期间使用更大的写入器实例将提供更多可以承担加载任务的工作线程。一个实例中可用的工作线程数大约是该实例拥有的 vCPU 数量的两倍。很多时候,人们会使用 db-r5-12xl 之类的东西来处理批量负载(对于大负载),然后将其缩减为更小的东西来处理常规查询工作负载。
我正在尝试将 624,118,983 条记录插入到 1000 个文件中,需要 35 个小时才能将所有内容加载到海王星中,这非常慢。 我已经用 2 个实例配置了 db.r5.large 实例。 我在 S3 存储桶中存储了 1000 个文件。 我有一个加载请求指向包含 1000 个文件的 S3 存储桶文件夹。 当我获得加载状态时,我得到低于响应。
{
"status" : "200 OK",
"payload" : {
"feedCount" : [
{
"LOAD_NOT_STARTED" : 640
},
{
"LOAD_IN_PROGRESS" : 1
},
{
"LOAD_COMPLETED" : 358
},
{
"LOAD_FAILED" : 1
}
],
"overallStatus" : {
"fullUri" : "s3://myntriplesfiles/ntriple-folder/",
"runNumber" : 1,
"retryNumber" : 0,
"status" : "LOAD_IN_PROGRESS",
"totalTimeSpent" : 26870,
"startTime" : 1639289761,
"totalRecords" : 224444549,
"totalDuplicates" : 17295821,
"parsingErrors" : 1,
"datatypeMismatchErrors" : 0,
"insertErrors" : 0
}
}
我在这里看到 LOAD_IN_PROGRESS 始终为 1。这意味着海王星不会尝试并行加载多个文件。 我如何告诉海王星以某种并行化方式加载 1000 个文件,例如并行化因子为 10。 我是否缺少任何配置?
这就是我使用批量加载的方式 api。
curl -X POST -H 'Content-Type: application/json' https://neptune-hostname:8182/loader -d '
{
"source" : "s3://myntriplesfiles/ntriple-folder/",
"format" : "nquads",
"iamRoleArn" : "my aws arn values goes here",
"region" : "us-east-2",
"failOnError" : "FALSE",
"parallelism" : "HIGH",
"updateSingleCardinalityProperties" : "FALSE",
"queueRequest" : "FALSE"
}'
请指教
Amazon Neptune 批量加载程序不会并行加载多个文件,但会将每个文件的内容分配给写入器实例上的可用工作线程数(受限于您拥有 parallelism
属性 在加载命令上设置)。如果在加载期间没有其他待处理的写入,您可以将该字段设置为 OVERSUBSCRIBE
,这将使用所有可用的工作线程。其次,较大的文件优于较小的文件,因为这为工作线程提供了更多它们可以并行执行的操作。第三,仅在加载期间使用更大的写入器实例将提供更多可以承担加载任务的工作线程。一个实例中可用的工作线程数大约是该实例拥有的 vCPU 数量的两倍。很多时候,人们会使用 db-r5-12xl 之类的东西来处理批量负载(对于大负载),然后将其缩减为更小的东西来处理常规查询工作负载。