本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
將資料從 Amazon S3 儲存貯體載入至 Neptune 資料庫執行個體。
若要載入資料,您必須將 HTTP POST
請求傳送至 https://
端點。您可以用 your-neptune-endpoint
:port
/loaderPOST
本文或以 URL 編碼參數來傳送 loader
請求的參數。
重要
MIME 類型必須是 application/json
。
S3 儲存貯體必須與叢集位於相同的 AWS 區域。
注意
您可以從 Amazon S3 載入加密的資料 (如果它是使用 Amazon S3 SSE-S3
模式加密的)。在這種情況下,Neptune 可以模擬您的憑證,並代表您發出 s3:getObject
呼叫。
您也可以從 Amazon S3 載入使用 SSE-KMS
模式加密的加密資料,只要您的 IAM 角色包含存取 AWS KMS的必要許可。如果沒有適當的 AWS KMS 許可,大量載入操作會失敗並傳回LOAD_FAILED
回應。
Neptune 目前不支援載入使用 SSE-C
模式加密的 Amazon S3 資料。
您不必等待一個載入工作完成,然後再啟動另一個工作。Neptune 最多可以一次將 64 個工作排入佇列,前提是其 queueRequest
參數全都設為 "TRUE"
。工作的佇列順序將為先進先出 (FIFO)。另一方面,若不希望載入工作排入佇列,則可將其 queueRequest
參數設為 "FALSE"
(預設值),如此一來,一項載入工作進行時,便無法啟動另一項載入工作。
針對只在且須在佇列中指定的先前任務順利完成後才能執行的任務,您可以使用 dependencies
參數將這些任務排入佇列。若這麼做,且任一指定的任務失敗的話,則您的任務將不會執行,且其狀態將設為 LOAD_FAILED_BECAUSE_DEPENDENCY_NOT_SATISFIED
。
Neptune 載入器請求語法
{ "source" : "
string
", "format" : "string
", "iamRoleArn" : "string
", "mode": "NEW|RESUME|AUTO
", "region" : "us-east-1
", "failOnError" : "string
", "parallelism" : "string
", "parserConfiguration" : { "baseUri" : "http://base-uri-string
", "namedGraphUri" : "http://named-graph-string
" }, "updateSingleCardinalityProperties" : "string
", "queueRequest" : "TRUE", "dependencies" : ["load_A_id
", "load_B_id
"] }
Neptune 載入器請求參數
-
source
– Amazon S3 URI。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
URI 的
object-key-name
元素相當於 Amazon S3 ListObjects API 呼叫中的 prefix 參數。它會識別所指定 Amazon S3 儲存貯體中其名稱以該字首開頭的所有物件。這可以是單一檔案或資料夾,也可以是多個檔案和/或資料夾。一個或多個指定的資料夾可以包含多個頂點檔案和多個邊緣檔案。
例如,如果您在名為 的 Amazon S3 儲存貯體中具有下列資料夾結構和檔案
bucket-name
:s3://bucket-name/a/bc s3://bucket-name/ab/c s3://bucket-name/ade s3://bucket-name/bcd
如果將來源參數指定為
s3://bucket-name/a
,則會載入前三個檔案。s3://bucket-name/a/bc s3://bucket-name/ab/c s3://bucket-name/ade
-
format
– 資料的格式。如需有關 NeptuneLoader
命令的資料格式詳細資訊,請參閱 使用 Amazon Neptune 大量載入器擷取資料。允許的值
csv
表示 Gremlin CSV 資料格式。opencypher
表示 openCypher CSV 資料格式。ntriples
表示 N-Triples RDF 資料格式。 nquads
表示 N-Quads RDF 資料格式。 rdfxml
表示 RDF\XML RDF 資料格式。 turtle
表示 Turtle RDF 資料格式。
-
iamRoleArn
– Neptune 資料庫執行個體為了存取 S3 儲存貯體 而擔任之 IAM 角色的 Amazon Resource Name (ARN)。如需建立可存取 Amazon S3 的角色,然後將其與 Neptune 叢集建立關聯的相關資訊,請參閱 必要條件:IAM 角色和 Amazon S3 存取。從引擎版本 1.2.1.0.R3 開始,如果 Neptune 資料庫執行個體和 Amazon S3 儲存貯體位於不同的 AWS 帳戶中,您也可以鏈結多個 IAM 角色。在此情況下,
iamRoleArn
會包含逗號分隔的角色 ARN 清單,如 在 Amazon Neptune 中鏈結 IAM 角色 中所述。例如:curl -X POST https://localhost:8182/loader \ -H 'Content-Type: application/json' \ -d '{ "source" : "s3://
(the target bucket name)
/(the target date file name)
", "iamRoleArn" : "arn:aws:iam::(Account A ID)
:role/(RoleA)
,arn:aws:iam::(Account B ID)
:role/(RoleB)
,arn:aws:iam::(Account C ID)
:role/(RoleC)
", "format" : "csv", "region" : "us-east-1" }' -
region
–region
參數必須符合叢集 AWS 的區域和 S3 儲存貯體。Amazon Neptune 可在下列 區域使用:
美國東部 (維吉尼亞北部):
us-east-1
美國東部 (俄亥俄):
us-east-2
美國西部 (加利佛尼亞北部):
us-west-1
美國西部 (奧勒岡):
us-west-2
加拿大 (中部):
ca-central-1
南美洲 (聖保羅):
sa-east-1
歐洲 (斯德哥爾摩):
eu-north-1
歐洲 (西班牙):
eu-south-2
歐洲 (愛爾蘭):
eu-west-1
歐洲 (倫敦):
eu-west-2
歐洲 (巴黎):
eu-west-3
歐洲 (法蘭克福):
eu-central-1
中東 (巴林):
me-south-1
中東 (阿拉伯聯合大公國):
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-southeast-3
亞太區域 (馬來西亞):
ap-southeast-5
亞太區域 (孟買):
ap-south-1
中國 (北京):
cn-north-1
中國 (寧夏):
cn-northwest-1
AWS GovCloud (美國西部):
us-gov-west-1
AWS GovCloud (美國東部):
us-gov-east-1
-
mode
– 載入工作模式。允許的值:
RESUME
、NEW
、AUTO
。預設值:
AUTO
-
RESUME
– 在 RESUME 模式下,載入器會從此來源尋找先前的載入,若找到某載入工作,則會繼續該工作。如果找不到先前的載入任務,載入器便會停止。載入程式可避免重新載入已順利載入先前任務的檔案。它只會嘗試處理失敗的檔案。如果從 Neptune 叢集捨棄先前載入的資料,則不會在此模式下重新載入該資料。如果先前的載入工作已從相同來源順利載入所有檔案,則不會重新載入任何工作,且載入器會傳回成功。
NEW
– 在 NEW 模式下,建立新的載入請求,無論先前有任何的載入。您可以使用此模式,在捨棄 Neptune 叢集先前載入的資料之後,從來源重新載入所有資料,或者載入同一來源的可用新資料。-
AUTO
– 在 AUTO 模式下,載入器會從相同來源尋找先前的載入任務,若找到一項載入任務,則會繼續該任務,如同RESUME
模式一般。若載入器未能從相同來源找到先前的載入任務,則會從該來源載入所有資料,如同
NEW
模式那樣。
-
-
failOnError
– 一種旗標,用來切換錯誤時完全停止。允許的值:
"TRUE"
、"FALSE"
。預設值:
"TRUE"
。此參數設為
"FALSE"
時,載入器會嘗試載入指定位置中的所有資料,並略過任何有錯誤的項目。此參數設為
"TRUE"
時,載入器會在遇到錯誤時立即停止。到該時間點載入的資料仍然存在。 -
parallelism
– 這是選用參數,可設定以減少大量載入程序所用的執行緒數量。允許的值:
LOW
– 使用的執行緒數目是可用 vCPU 除以 8 後的數字。MEDIUM
– 使用的執行緒數目是可用 vCPU 除以 2 後的數字。HIGH
– 使用的執行緒數目與可用 vCPU 的數目相同。-
OVERSUBSCRIBE
– 使用的執行緒數目是可用 vCPU 乘以 2 後的數字。如果使用此值,大量載入器會佔用所有可用的資源。不過,這並不表示
OVERSUBSCRIBE
設定會產生 100% CPU 使用率。由於載入操作受 I/O 限制,因此預期的最高 CPU 使用率在 60% 到 70% 的範圍內。
預設值:
HIGH
載入 OpenCypher 資料時,
parallelism
設定有時可能會導致執行緒之間發生死結。發生這種情況時,Neptune 會傳回LOAD_DATA_DEADLOCK
錯誤。通常,您可以透過將parallelism
設定為較低的設定,並重試載入命令來修正此問題。 -
parserConfiguration
– 包含額外剖析器組態值的選用物件。也可選用每個子參數:名稱 範例值 描述 namedGraphUri
http://aws.amazon.com/neptune/vocab/v01/DefaultNamedGraph
The default graph for all RDF formats when no graph is specified (for non-quads formats and NQUAD entries with no graph). The default is http://aws.amazon.com/neptune/vocab/v01/DefaultNamedGraph
baseUri
http://aws.amazon.com/neptune/default
The base URI for RDF/XML and Turtle formats. The default is http://aws.amazon.com/neptune/default
.allowEmptyStrings
true
載入 CSV 資料時,Gemlin 使用者必須能夠傳遞空字串值 ("") 做為節點和邊緣屬性。如果
allowEmptyStrings
設定為false
(預設值),則這類空字串會被視為 null 而不會將其載入。如果
allowEmptyStrings
設定為true
,載入器會將空字串視為有效的屬性值,並相應地載入它們。如需詳細資訊,請參閱SPARQL 預設圖形和具名圖形。
-
updateSingleCardinalityProperties
– 這是選用參數,可控制大量載入器如何處理單一基數頂點或邊緣屬性的新值。不支援將此用於載入 openCypher 資料 (請參閱 載入 openCypher 資料)。允許的值:
"TRUE"
、"FALSE"
。預設值:
"FALSE"
。根據預設,或當
updateSingleCardinalityProperties
明確設定為"FALSE"
時,載入器會將新值視為錯誤,因為它違反單一基數。另一方面,當
updateSingleCardinalityProperties
設為"TRUE"
時,大量載入器會以新的值取代現有的值。如果在要載入的來源檔案中提供多個邊緣或單一基數頂點屬性值,則大量載入結尾的最終值可以是這些新值的其中之一。載入器只會保證現有的值已由其中一個新值取代。 -
queueRequest
– 此為選用標記參數,用以指示載入請求能否排入佇列。您不必等到載入工作完成才能發出另一個載入工作,因為 Neptune 最多可以一次將 64 個工作排入佇列,前提是其
queueRequest
參數都設為"TRUE"
。工作的佇列順序將為先進先出 (FIFO)。如果
queueRequest
參數遭省略或設為"FALSE"
,且已有其他執行中的載入任務,則此載入請求將失敗。允許的值:
"TRUE"
、"FALSE"
。預設值:
"FALSE"
。 -
dependencies
– 這是選用參數,可在一或多個佇列中先前工作順利完成時,發出佇列載入請求。Neptune 最多可以一次將 64 個載入請求排入佇列,前提是其
queueRequest
參數設為"TRUE"
。dependencies
參數可讓您在一或多個佇列中指定的先前請求順利完成時,執行這類佇列請求。例如,如果載入
Job-A
和Job-B
彼此獨立,但載入Job-C
須先完成Job-A
和Job-B
才能開始,請依照指示執行:以任何順序一個接著一個提交
load-job-A
和load-job-B
,並儲存其載入 ID。使用兩任務其
dependencies
欄位中的載入 ID 提交load-job-C
:
"dependencies" : ["
job_A_load_id
", "job_B_load_id
"]由於
dependencies
參數的關係,大量載入器在Job-A
和Job-B
順利完成之前,將不會啟動Job-C
。如果其中任何一個失敗,則不執行 Job-C,且其狀態將設為LOAD_FAILED_BECAUSE_DEPENDENCY_NOT_SATISFIED
。您可以使用這種方式設定多個相依性層級,如此一來,一項任務若失敗,將導致直間接仰賴該任務的所有請求遭取消。
-
userProvidedEdgeIds
– 只有在載入包含關係 ID 的 OpenCypher 資料時,才需要這個參數。在載入資料中明確提供 OpenCypher 關係 ID 時,必須包含它並設定為True
(建議使用)。如果
userProvidedEdgeIds
不存在或設定為True
,則載入中的每個關係檔案中都必須存在一個:ID
欄。當
userProvidedEdgeIds
存在且設定為False
時,載入中的關係檔案不得包含:ID
欄。相反地,Neptune 載入器會自動為每個關係產生一個 ID。明確提供關係 ID 很有用,如此一來,載入器就可以在 CSV 資料中的錯誤完成修正之後繼續載入,而不必重新載入任何已載入的關係。如果尚未明確指派關係 ID,則載入器無法繼續失敗的載入 (如果任何關係檔案必須更正的話),反而必須重新載入所有關係。
-
accessKey
– 已棄用 可存取 S3 儲存貯體和資料檔案的 IAM 角色的存取金鑰 ID。建議改用
iamRoleArn
參數。如需建立可存取 Amazon S3 的角色,然後將其與 Neptune 叢集建立關聯的相關資訊,請參閱 必要條件:IAM 角色和 Amazon S3 存取。如需詳細資訊,請參閱存取金鑰 (存取金鑰 ID 和私密存取金鑰)。
-
secretKey
– 已棄用 建議改用iamRoleArn
參數。如需建立可存取 Amazon S3 的角色,然後將其與 Neptune 叢集建立關聯的相關資訊,請參閱 必要條件:IAM 角色和 Amazon S3 存取。如需詳細資訊,請參閱存取金鑰 (存取金鑰 ID 和私密存取金鑰)。
載入 openCypher 資料的特殊考量
以 CSV 格式載入 openCypher 資料時,必須將格式參數設定為
opencypher
。不支援
updateSingleCardinalityProperties
參數用於 openCypher 載入,因為所有 openCypher 屬性都有單一基數。OpenCypher 載入格式不支援陣列,而且如果 ID 值出現多次,則系統會將其視為重複或插入錯誤 (請參閱下文)。-
Neptune 載入器會處理它在 OpenCypher 資料中遇到的重複項目,如下所示:
-
如果載入器遇到多個具有相同節點 ID 的資料列,則會使用下列規則合併它們:
資料列行中的所有標籤現在會新增至節點。
對於每個屬性,只會載入其中一個屬性值。選取要載入哪一個是不具確定性的。
如果載入器遇到多個具有相同關係 ID 的資料列,則只會載入其中一個資料列。選取要載入哪一個是不具確定性的。
如果載入器遇到具有現有節點或關係 ID 的載入資料,則它永遠不會更新資料庫中現有節點或關係的屬性值。不過,它確實會載入現有節點或關係中不存在的節點標籤和屬性。
-
-
雖然您不必將 ID 指派給關係,但是這樣做通常是個好主意 (請參閱上面的
userProvidedEdgeIds
參數)。若沒有明確的關係 ID,載入器必須在關係檔案中發生錯誤時重新載入所有關係,而不是從失敗處繼續載入。此外,如果載入資料未包含明確的關係 ID,則載入器無法偵測重複的關係。
以下是 openCypher 載入命令的範例:
curl -X POST https://
your-neptune-endpoint
:port
/loader \ -H 'Content-Type: application/json' \ -d ' { "source" : "s3://bucket-name
/object-key-name
", "format" : "opencypher", "userProvidedEdgeIds": "TRUE", "iamRoleArn" : "arn:aws:iam::account-id
:role/role-name
", "region" : "region
", "failOnError" : "FALSE", "parallelism" : "MEDIUM", }'
載入器回應與正常回應相同。例如:
{ "status" : "200 OK", "payload" : { "loadId" : "
guid_as_string
" } }
Neptune 載入器回應語法
{ "status" : "200 OK", "payload" : { "loadId" : "
guid_as_string
" } }
200 OK
成功開始的載入任務會傳回 200
程式碼。