0

我正在尝试将 624,118,983 条记录插入到 1000 个文件中,需要 35 个小时才能全部加载到海王星中,这非常慢。我已经为 db.r5.large 实例配置了 2 个实例。我有 1000 个文件存储在 S3 存储桶中。我有一个加载请求指向包含 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"
}'

请指教。

4

1 回答 1

0

Amazon Neptune 批量加载程序不会并行加载多个文件,而是将每个文件的内容分配给写入器实例上可用的工作线程数(受限于您parallelism在加载命令上设置属性的方式)。如果您在加载期间没有其他待处理的写入,您可以将该字段设置为OVERSUBSCRIBE这将使用所有可用的工作线程。其次,较大的文件比较小的文件更好,因为这使工作线程可以并行执行更多操作。第三,仅在加载期间使用更大的写入器实例将提供更多可以承担加载任务的工作线程。一个实例中可用的工作线程数大约是该实例具有的 vCPU 数的两倍。很多时候,人们会使用 db-r5-12xl 之类的东西来处理大容量负载(用于大负载),然后将其缩小到更小的东西来处理常规查询工作负载。

于 2021-12-14T15:59:33.217 回答