本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
优化 Amazon Neptune 批量加载
使用以下策略将 Neptune 批量加载的加载时间保持在最低限度:
-
清理您的数据:
在加载之前,请务必将数据转换为支持的数据格式。
删除所有重复项或已知错误。
尽可能减少唯一谓词(例如边缘和顶点的属性)的数量。
-
优化您的文件:
如果您加载大文件(例如来自 Amazon S3 存储桶的CSV文件),则加载器会将它们解析为可以并行加载的块,从而为您管理并发性。使用非常大量的小文件可能会减慢此过程。
如果您从 Amazon S3 文件夹加载多个文件,加载程序会自动先加载顶点文件,然后再加载边缘文件。
压缩文件可缩短传输时间。加载程序支持对源文件进行
gzip
压缩。
-
检查您的加载程序设置:
-
如果在加载期间不需要执行任何其它操作,请使用 OVERSUBSCRIBEparallelism 参数。此参数设置使批量加载器在运行时使用所有可用CPU资源。在 I/O 限制允许的情况下,通常需要 60%-70% 的CPU容量才能保持操作的运行速度。
注意
如果设置
parallelism
为OVERSUBSCRIBE
或HIGH
(默认设置),则在加载 openCypher 数据时,线程可能会遇到争用条件和死锁,从而导致LOAD_DATA_DEADLOCK
错误。在这种情况下,请将parallelism
设为较低的设置并重试加载。 如果您的加载任务将包含多个加载请求,请使用
queueRequest
参数。将queueRequest
设置为TRUE
允许 Neptune 对您的请求进行排队,这样您就不必等到一个请求完成后再发出另一个请求。如果您的加载请求正在排队,则可以使用
dependencies
参数设置依赖级别,这样一个任务的失败就会导致相关任务失败。这样可以防止加载的数据出现不一致。-
如果加载任务将涉及更新先前加载的值,请务必将
updateSingleCardinalityProperties
参数设置为TRUE
。如果不这样做,加载程序会将更新现有单个基数值的尝试视为错误。对于 Gremlin 数据,还会在属性列标题中指定基数(请参阅属性列标题)。注意
该
updateSingleCardinalityProperties
参数不适用于资源描述框架 (RDF) 数据。 您可以使用
failOnError
参数来确定当遇到错误时批量加载操作是失败还是继续。此外,您还可以使用mode
参数来确保加载任务从上一个任务失败的地方恢复加载,而不是重新加载已经加载的数据。
-
-
纵向扩展 - 在批量加载之前,将数据库集群的写入器实例设置为最大大小。请注意,如果执行此操作,则必须同时纵向扩展数据库集群中的所有只读副本实例,或者在加载完数据之前将其移除。
批量加载完成后,请务必再次缩减写入器实例。
重要
如果您在批量加载期间由于复制滞后而经历了重复重启只读副本的循环,则您的副本可能无法跟上数据库集群中写入器的速度。要么将读取器扩展到比写入器大,要么在批量加载期间暂时将它们移除,然后在完成后重新创建。
有关设置加载程序请求参数的更多详细信息,请参阅请求参数。