Perintah Loader Neptune - Amazon Neptune

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Perintah Loader Neptune

Memuat data dari bucket Amazon S3 ke instans DB Neptune.

Untuk memuat data, Anda harus mengirim HTTP POST permintaan ke https://your-neptune-endpoint:port/loader titik akhir. Parameter untuk loader permintaan dapat dikirim dalam POST tubuh atau sebagai parameter URL -encoded.

penting

MIMETipenya harusapplication/json.

Bucket S3 harus berada di AWS Region yang sama dengan cluster.

catatan

Anda dapat memuat data terenkripsi dari Amazon S3 jika dienkripsi menggunakan Mode SSE-S3 Amazon S3. Dalam hal ini, Neptune dapat meniru kredensial Anda dan mengeluarkan panggilan s3:getObject atas nama Anda.

Anda juga dapat memuat data terenkripsi dari Amazon S3 yang dienkripsi menggunakan SSE-KMS mode, selama peran IAM Anda menyertakan izin yang diperlukan untuk mengakses. AWS KMS Tanpa AWS KMS izin yang tepat, operasi beban massal gagal dan mengembalikan LOAD_FAILED respons.

Neptune saat ini tidak mendukung pemuatan data yang dienkripsi Amazon S3 menggunakan Mode SSE-C.

Anda tidak perlu menunggu untuk satu pekerjaan pemuatan selesai sebelum Anda memulai satu pekerjaan lagi. Neptune dapat mengantrekan sebanyak 64 permintaan pekerjaan sekaligus, asalkan parameter queueRequest mereka semua diatur ke "TRUE". Urutan antrian pekerjaan adalah first-in-first-out (FIFO). Jika Anda tidak ingin pekerjaan pemuatan diantrian, di sisi lain, Anda dapat mengatur queueRequest parameternya ke "FALSE" (default), sehingga pekerjaan pemuatan akan gagal jika yang lain sudah dalam proses.

Anda dapat menggunakan parameter dependencies untuk mengantrekan pekerjaan yang hanya harus dijalankan setelah pekerjaan sebelumnya yang ditentukan dalam antrian telah berhasil diselesaikan. Jika Anda melakukan itu dan salah satu dari mereka pekerjaan tertentu gagal, pekerjaan Anda tidak akan dijalankan dan statusnya akan diatur ke LOAD_FAILED_BECAUSE_DEPENDENCY_NOT_SATISFIED.

Sintaks Permintaan 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"] }

Parameter Permintaan Loader Neptune

  • source- Amazon S3URI.

    SOURCEParameter menerima Amazon URI S3 yang mengidentifikasi satu file, beberapa file, folder, atau beberapa folder. Neptune memuat setiap file data dalam folder yang ditentukan.

    URIBisa dalam salah satu format berikut.

    • 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

    object-key-nameElemen URI setara dengan parameter awalan dalam panggilan Amazon ListObjectsAPIS3. Ini mengidentifikasi semua objek dalam bucket Amazon S3 yang ditentukan yang namanya dimulai dengan prefiks itu. Objek itu bisa berupa satu file atau folder, atau beberapa file dan/atau folder.

    Folder atau folder-folder yang ditentukan dapat berisi beberapa file vertex dan beberapa file edge.

    Misalnya, jika Anda memiliki struktur folder dan file berikut di bucket Amazon S3 bernama: bucket-name

    s3://bucket-name/a/bc s3://bucket-name/ab/c s3://bucket-name/ade s3://bucket-name/bcd

    Jika parameter sumber ditentukan sebagais3://bucket-name/a, tiga file pertama akan dimuat.

    s3://bucket-name/a/bc s3://bucket-name/ab/c s3://bucket-name/ade
  • format — Format data. Untuk informasi selengkapnya tentang format data untuk perintah Loader Neptune, lihat Menggunakan Amazon Neptune Bulk Loader untuk Menyerap Data.

    Nilai yang diizinkan
  • iamRoleArn— Amazon Resource Name (ARN) untuk IAM peran yang akan diasumsikan oleh instans DB Neptunus untuk akses ke bucket S3. Untuk informasi tentang membuat peran yang memiliki akses ke Amazon S3 dan kemudian mengaitkannya dengan klaster Neptune, lihat Prasyarat: Peran dan Akses IAM Amazon S3.

    Dimulai dengan rilis engine 1.2.1.0.R3, Anda juga dapat merantai beberapa peran IAM jika instans DB Neptunus dan bucket Amazon S3 berada di Akun yang berbeda. AWS Dalam hal ini, iamRoleArn berisi daftar peran yang dipisahkan komaARNs, seperti yang dijelaskan dalam. IAMPeran rantai di Amazon Neptunus Sebagai contoh:

    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" }'
  • regionregion Parameter harus cocok dengan AWS Wilayah cluster dan bucket S3.

    Amazon Neptune tersedia di Wilayah berikut:

    • US East (N. Virginia):   us-east-1

    • AS Timur (Ohio): us-east-2

    • US West (N. California):   us-west-1

    • US West (Oregon):   us-west-2

    • Canada (Central):   ca-central-1

    • South America (São Paulo):   sa-east-1

    • Eropa (Stockholm): eu-north-1

    • Eropa (Irlandia): eu-west-1

    • Eropa (London): eu-west-2

    • Eropa (Paris): eu-west-3

    • Eropa (Frankfurt): eu-central-1

    • Timur Tengah (Bahrain): me-south-1

    • Timur Tengah (UAE): me-central-1

    • Israel (Tel Aviv): il-central-1

    • Afrika (Cape Town): af-south-1

    • Asia Pasifik (Hong Kong): ap-east-1

    • Asia Pacific (Tokyo):   ap-northeast-1

    • Asia Pasifik (Seoul): ap-northeast-2

    • Asia Pasifik (Osaka): ap-northeast-3

    • Asia Pacific (Singapore):   ap-southeast-1

    • Asia Pacific (Sydney):   ap-southeast-2

    • Asia Pasifik (Mumbai): ap-south-1

    • Tiongkok (Beijing): cn-north-1

    • Tiongkok (Ningxia): cn-northwest-1

    • AWS GovCloud (AS-Barat): us-gov-west-1

    • AWS GovCloud (AS-Timur): us-gov-east-1

  • mode — Mode pekerjaan pemuatan.

    Nilai yang diizinkan:RESUME,NEW,AUTO.

    Nilai default: AUTO

    • RESUME— Dalam RESUME mode, loader mencari beban sebelumnya dari sumber ini, dan jika menemukannya, lanjutkan pekerjaan pemuatan itu. Jika tidak ada pekerjaan pemuatan sebelumnya yang ditemukan, loader berhenti.

      Loader menghindari memuat ulang file yang berhasil dimuat di pekerjaan sebelumnya. Ia hanya mencoba untuk memproses file yang gagal. Jika Anda menjatuhkan data yang dimuat sebelumnya dari klaster Neptune Anda, data tersebut tidak dimuat ulang dalam mode ini. Jika pekerjaan pemuatan sebelumnya berhasil memuat semua file dari sumber yang sama, tidak ada yang dimuat ulang, dan loader mengembalikan keberhasilan.

    • NEW— Dalam NEW mode, membuat permintaan beban baru terlepas dari beban sebelumnya. Anda dapat menggunakan mode ini untuk memuat ulang semua data dari sumber setelah menjatuhkan data yang dimuat sebelumnya dari klaster Neptune Anda, atau untuk memuat data baru yang tersedia di sumber yang sama.

    • AUTO— Dalam AUTO mode, loader mencari pekerjaan pemuatan sebelumnya dari sumber yang sama, dan jika menemukannya, lanjutkan pekerjaan itu, seperti dalam RESUME mode.

      Jika loader tidak menemukan pekerjaan pemuatan sebelumnya dari sumber yang sama, loader akan memuat semua data dari sumbernya, seperti pada mode NEW.

  • failOnError — Sebuah bendera untuk mengubah berhenti penuh pada kesalahan.

    Nilai yang diizinkan: "TRUE", "FALSE".

    Nilai default:"TRUE".

    Ketika parameter ini diatur ke "FALSE", loader mencoba memuat semua data di lokasi yang ditentukan, melewatkan entri apa pun yang memiliki kesalahan.

    Ketika parameter ini diatur ke "TRUE", loader berhenti segera setelah menemukan kesalahan. Data yang dimuat sampai saat itu tetap ada.

  • parallelism — Ini adalah parameter opsional yang dapat diatur untuk mengurangi jumlah utas yang digunakan oleh proses pemuatan massal.

    Nilai yang diizinkan:

    • LOW— Jumlah benang yang digunakan adalah jumlah yang tersedia vCPUs dibagi dengan 8.

    • MEDIUM— Jumlah benang yang digunakan adalah jumlah yang tersedia vCPUs dibagi 2.

    • HIGH— Jumlah thread yang digunakan sama dengan jumlah yang tersediavCPUs.

    • OVERSUBSCRIBE— Jumlah utas yang digunakan adalah jumlah yang tersedia vCPUs dikalikan dengan 2. Jika nilai ini digunakan, loader massal mengambil semua sumber daya yang tersedia.

      Ini tidak berarti, bagaimanapun, bahwa OVERSUBSCRIBE pengaturan menghasilkan CPU pemanfaatan 100%. Karena operasi beban terikat I/O, CPU pemanfaatan tertinggi yang diharapkan adalah dalam kisaran 60% hingga 70%.

    Nilai default: HIGH

    parallelismPengaturan terkadang dapat mengakibatkan kebuntuan antar utas saat memuat openCypher data. Ketika ini terjadi, Neptunus mengembalikan kesalahan. LOAD_DATA_DEADLOCK Anda biasanya dapat memperbaiki masalah dengan mengatur parallelism ke pengaturan yang lebih rendah dan mencoba kembali perintah load.

  • parserConfiguration — Sebuah objek opsional dengan nilai konfigurasi parser tambahan. Masing-masing parameter turunan juga opsional:

    Nama Nilai Contoh Deskripsi
    namedGraphUri http://aws.amazon.com/neptune/vocab/v01/DefaultNamedGraph Grafik default untuk semua RDF format ketika tidak ada grafik yang ditentukan (untuk format non-quads dan NQUAD entri tanpa grafik). Bawaannya adalah http://aws.amazon.com/neptune/vocab/v01/DefaultNamedGraph
    baseUri http://aws.amazon.com/neptune/default Dasar URI untuk formatRDF/XMLdan Turtle. Default-nya adalah http://aws.amazon.com/neptune/default.
    allowEmptyStrings true

    Pengguna Gremlin harus dapat memberikan nilai string kosong (“”) sebagai properti node dan edge saat memuat CSV data. Jika allowEmptyStrings diatur ke false (default), string kosong diperlakukan sebagai null dan tidak dimuat.

    Jika allowEmptyStrings diatur ke true, loader memperlakukan string kosong sebagai nilai properti yang valid dan memuatnya sesuai keperluan.

    Untuk informasi selengkapnya, lihat SPARQLGrafik Default dan Grafik Bernama.

  • updateSingleCardinalityProperties — Ini adalah parameter opsional yang mengontrol bagaimana bulk loader memperlakukan nilai baru untuk properti vertex atau edge single-cardinality. Ini tidak didukung untuk memuat openCypher data (lihatMemuat openCypher data).

    Nilai yang diizinkan: "TRUE", "FALSE".

    Nilai default:"FALSE".

    Secara default, atau saat updateSingleCardinalityProperties secara eksplisit diatur ke "FALSE", loader memperlakukan nilai baru sebagai kesalahan, karena melanggar kardinalitas tunggal.

    Saat updateSingleCardinalityProperties diatur ke "TRUE", di sisi lain, loader massal menggantikan nilai yang ada dengan yang baru. Jika beberapa edge atau nilai properti vertex single-cardinality disediakan dalam file sumber yang dimuat, nilai akhir pada akhir pemuatan massal bisa menjadi salah satu dari nilai-nilai baru tersebut. Loader hanya menjamin bahwa nilai yang ada telah digantikan oleh salah satu yang baru.

  • queueRequest — Ini adalah parameter bendera opsional yang menunjukkan apakah permintaan pemuatan dapat diantrekan atau tidak.

    Anda tidak perlu menunggu satu pekerjaan muat selesai sebelum mengeluarkan pekerjaan berikutnya, karena Neptune dapat mengantrekan sebanyak 64 pekerjaan sekaligus, asalkan parameter queueRequest semua diatur ke "TRUE". Urutan antrian pekerjaan adalah first-in-first-out (FIFO).

    Jika parameter queueRequest dihilangkan atau diatur ke "FALSE", permintaan pemuatan akan gagal jika pekerjaan pemuatan lain sudah berjalan.

    Nilai yang diizinkan: "TRUE", "FALSE".

    Nilai default:"FALSE".

  • dependencies — Ini adalah parameter opsional yang dapat membuat permintaan pemuatan yang mengantre bergantung pada penyelesaian yang berhasil dari satu atau lebih pekerjaan sebelumnya dalam antrean.

    Neptune dapat mengantrekan sebanyak 64 permintaan pemuatan sekaligus, jika parameter queueRequest permintaannya diatur ke "TRUE". Parameter dependencies memungkinkan Anda melakukan eksekusi seperti permintaan mengantre yang tergantung pada penyelesaian yang berhasil dari satu atau lebih permintaan ditentukan sebelumnya dalam antrean.

    Misalnya, jika pemuatan Job-A dan Job-B independen satu sama lain, namun pemuatan Job-C membutuhkan Job-A dan Job-B harus selesai sebelum dimulai, lanjutkan sebagai berikut:

    1. Kirim load-job-A dan load-job-B satu demi satu dalam urutan apa pun, dan simpan load-id mereka.

    2. Kirim load-job-C dengan load-id dari dua pekerjaan di bidang dependencies-nya:

    "dependencies" : ["job_A_load_id", "job_B_load_id"]

    Karena parameter dependencies, loader massal tidak akan memulai Job-C sampai Job-A dan Job-B telah berhasil diselesaikan. Jika salah satu dari mereka gagal, Job-C tidak akan dieksekusi, dan statusnya akan diatur ke LOAD_FAILED_BECAUSE_DEPENDENCY_NOT_SATISFIED.

    Anda dapat mengatur beberapa tingkat ketergantungan dengan cara ini, sehingga kegagalan satu pekerjaan akan menyebabkan semua permintaan yang secara langsung atau tidak langsung tergantung padanya untuk dibatalkan.

  • userProvidedEdgeIds— Parameter ini diperlukan hanya saat memuat openCypher data yang berisi hubunganIDs. Itu harus disertakan dan diatur ke True ketika openCypher hubungan IDs secara eksplisit disediakan dalam data beban (disarankan).

    Ketika tidak userProvidedEdgeIds ada atau diatur keTrue, :ID kolom harus ada di setiap file hubungan dalam beban.

    Ketika userProvidedEdgeIds hadir dan diatur keFalse, file hubungan dalam beban tidak boleh berisi :ID kolom. Sebagai gantinya, pemuat Neptunus secara otomatis menghasilkan ID untuk setiap hubungan.

    Sangat berguna untuk memberikan hubungan secara IDs eksplisit sehingga loader dapat melanjutkan pemuatan setelah kesalahan dalam CSV data diperbaiki, tanpa harus memuat ulang hubungan apa pun yang telah dimuat. Jika hubungan IDs belum ditetapkan secara eksplisit, loader tidak dapat melanjutkan pemuatan yang gagal jika ada file hubungan yang harus diperbaiki, dan sebagai gantinya harus memuat ulang semua hubungan.

  • accessKey[usang] ID kunci akses IAM peran dengan akses ke bucket S3 dan file data.

    Parameter iamRoleArn dianjurkan sebagai gantinya. Untuk informasi tentang membuat peran yang memiliki akses ke Amazon S3 dan kemudian mengaitkannya dengan klaster Neptune, lihat Prasyarat: Peran dan Akses IAM Amazon S3.

    Untuk informasi lebih lanjut, lihat Access key (access key ID dan secret access key).

  • secretKey   –   [usang] Parameter iamRoleArn dianjurkan sebagai gantinya. Untuk informasi tentang membuat peran yang memiliki akses ke Amazon S3 dan kemudian mengaitkannya dengan klaster Neptune, lihat Prasyarat: Peran dan Akses IAM Amazon S3.

    Untuk informasi lebih lanjut, lihat Access key (access key ID dan secret access key).

Pertimbangan khusus untuk memuat data openCypher

  • Saat memuat openCypher data dalam CSV format, parameter format harus diatur keopencypher.

  • updateSingleCardinalityPropertiesParameter tidak didukung untuk openCypher beban karena semua openCypher properti memiliki kardinalitas tunggal. Format openCypher beban tidak mendukung array, dan jika nilai ID muncul lebih dari sekali, itu diperlakukan sebagai duplikat atau kesalahan penyisipan (lihat di bawah).

  • Pemuat Neptunus menangani duplikat yang ditemuinya openCypher dalam data sebagai berikut:

    • Jika loader menemukan beberapa baris dengan ID node yang sama, mereka digabungkan menggunakan aturan berikut:

      • Semua label di baris ditambahkan ke node.

      • Untuk setiap properti, hanya satu dari nilai properti yang dimuat. Pemilihan yang akan dimuat adalah non-deterministik.

    • Jika loader menemukan beberapa baris dengan ID hubungan yang sama, hanya satu dari mereka yang dimuat. Pemilihan yang akan dimuat adalah non-deterministric.

    • Loader tidak pernah memperbarui nilai properti dari node atau relasi yang ada dalam database jika menemukan data beban yang memiliki ID dari node atau relasi yang ada. Namun, itu memuat label node dan properti yang tidak ada di node atau hubungan yang ada.

  • Meskipun Anda tidak harus menetapkan IDs hubungan, biasanya itu ide yang bagus (lihat userProvidedEdgeIds parameter di atas). Tanpa hubungan eksplisitIDs, pemuat harus memuat ulang semua hubungan jika terjadi kesalahan dalam file hubungan, daripada melanjutkan pemuatan dari tempat gagal.

    Selain itu, jika data pemuatan tidak berisi hubungan eksplisitIDs, loader tidak memiliki cara untuk mendeteksi hubungan duplikat.

Berikut adalah contoh perintah openCypher load:

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", }'

Respons loader sama dengan normal. Sebagai contoh:

{ "status" : "200 OK", "payload" : { "loadId" : "guid_as_string" } }

Sintaks Respons Loader Neptune

{ "status" : "200 OK", "payload" : { "loadId" : "guid_as_string" } }
200 OK

Pekerjaan pemuatan yang berhasil dimulai mengembalikan kode 200.

Kesalahan Loader Neptune

Ketika kesalahan terjadi, JSON objek dikembalikan dalam BODY respon. Objek message berisi deskripsi kesalahan.

Kategori Kesalahan
  • Error 400— Kesalahan sintaks mengembalikan kesalahan permintaan yang HTTP 400 buruk. Pesan ini menjelaskan kesalahan.

  • Error 500— Permintaan yang valid yang tidak dapat diproses mengembalikan kesalahan server HTTP 500 internal. Pesan ini menjelaskan kesalahan.

Berikut ini adalah kemungkinan pesan kesalahan dari loader dengan deskripsi kesalahannya.

Pesan Kesalahan Loader
  • Couldn't find the AWS credential for iam_role_arn(HTTP400)

    Kredensialnya tidak ditemukan. Verifikasi kredensyal yang disediakan terhadap IAM konsol atau AWS CLI output. Pastikan Anda telah menambahkan IAM peran yang ditentukan iamRoleArn ke dalam cluster.

  • S3 bucket not found for source(HTTP400)

    Bucket S3 tidak ada. Periksa nama bucket.

  • The source source-uri does not exist/not reachable(HTTP400)

    File yang cocok tidak ditemukan di bucket S3.

  • Unable to connect to S3 endpoint. Provided source = source-uri and region = aws-region(HTTP500)

    Tidak dapat terhubung ke Amazon S3. Wilayah harus sesuai dengan Wilayah klaster. Pastikan Anda memiliki VPC titik akhir. Untuk informasi tentang membuat VPC titik akhir, lihatMembuat Endpoint Amazon S3 VPC.

  • Bucket is not in provided Region (aws-region)(HTTP400)

    Bucket harus berada di AWS Wilayah yang sama dengan instans DB Neptunus Anda.

  • Unable to perform S3 list operation(HTTP400)

    IAMPengguna atau peran yang diberikan tidak memiliki List izin pada bucket atau folder. Periksa kebijakan atau daftar kontrol akses (ACL) di bucket.

  • Start new load operation not permitted on a read replica instance(HTTP405)

    Memuat adalah operasi menulis. Coba lagi pemuatan pada titik akhir klaster baca/tulis.

  • Failed to start load because of unknown error from S3(HTTP500)

    Amazon S3 mengembalikan kesalahan yang tidak diketahui. Hubungi AWS Support.

  • Invalid S3 access key(HTTP400)

    Access key tidak valid. Periksa kredensial yang disediakan.

  • Invalid S3 secret key(HTTP400)

    Kunci rahasia tidak valid. Periksa kredensial yang disediakan.

  • Max concurrent load limit breached(HTTP400)

    Jika permintaan pemuatan diajukan tanpa "queueRequest" : "TRUE", dan pekerjaan pemuatan saat ini berjalan, permintaan akan gagal dengan kesalahan ini.

  • Failed to start new load for the source "source name". Max load task queue size limit breached. Limit is 64(HTTP400)

    Neptune mendukung antrean sebanyak 64 pekerjaan loader sekaligus. Jika permintaan pemuatan tambahan diserahkan ke antrean ketika sudah berisi 64 pekerjaan, permintaan gagal dengan pesan ini.

Contoh Neptune Loader

contoh Permintaan

Berikut ini adalah permintaan yang dikirim melalui HTTP POST menggunakan curl perintah. Ini memuat file dalam format CSV Neptunus. Untuk informasi selengkapnya, lihat Format data muat Gremlin.

curl -X POST \ -H 'Content-Type: application/json' \ https://your-neptune-endpoint:port/loader -d ' { "source" : "s3://bucket-name/object-key-name", "format" : "csv", "iamRoleArn" : "ARN for the IAM role you are using", "region" : "region", "failOnError" : "FALSE", "parallelism" : "MEDIUM", "updateSingleCardinalityProperties" : "FALSE", "queueRequest" : "FALSE" }'
contoh Respons
{ "status" : "200 OK", "payload" : { "loadId" : "ef478d76-d9da-4d94-8ff1-08d9d4863aa5" } }