Memecahkan masalah konektor Azure Cosmos DB di Azure Data Factory dan Azure Synapse

BERLAKU UNTUK:Azure Data Factory Azure Synapse Analytics

Tip

Cobalah Data Factory di Microsoft Fabric, solusi analitik all-in-one untuk perusahaan. Microsoft Fabric mencakup semuanya mulai dari pergerakan data hingga ilmu data, analitik real time, kecerdasan bisnis, dan pelaporan. Pelajari cara memulai uji coba baru secara gratis!

Artikel ini memberikan saran untuk memecahkan masalah umum dengan konektor Azure Cosmos DB dan Azure Cosmos DB untuk NoSQL di Azure Data Factory dan Azure Synapse.

Pesan kesalahan: Ukuran permintaan terlalu besar

  • Gejala: Ketika menyalin data ke Azure Cosmos DB dengan ukuran batch tulis default, Anda menerima kesalahan berikut: Request size is too large.

  • Penyebab:Azure Cosmos DB membatasi ukuran satu permintaan hingga 2 MB. Rumusnya adalah ukuran permintaan = ukuran dokumen tunggal * ukuran batch tulis. Jika ukuran dokumen Anda besar, perilaku default akan menghasilkan ukuran permintaan yang terlalu besar.

  • Resolusi:
    Anda dapat menyetel ukuran batch tulis. Di sink aktivitas salin, kurangi nilai ukuran batch tulis (nilai defaultnya adalah 10000).
    Jika mengurangi nilai ukuran batch tulis menjadi 1 masih tidak berfungsi, ubah Azure Cosmos DB SQL API Anda dari V2 ke V3. Untuk menyelesaikan konfigurasi ini, Anda memiliki dua opsi:

    • Opsi 1: Ubah jenis autentikasi Anda menjadi perwakilan layanan atau identitas terkelola yang ditetapkan sistem atau identitas terkelola yang ditetapkan pengguna.
    • Opsi 2: Jika Anda masih ingin menggunakan autentikasi kunci akun, ikuti langkah-langkah berikut:
      1. Buat layanan tertaut Azure Cosmos DB for NoSQL.

      2. Perbarui layanan tertaut dengan templat berikut.

        {
          "name": "<CosmosDbV3>",
          "type": "Microsoft.DataFactory/factories/linkedservices",
          "properties": {
            "annotations": [],
            "type": "CosmosDb",
            "typeProperties": {
              "useV3": true,
              "accountEndpoint": "<account endpoint>",
              "database": "<database name>",
              "accountKey": {
                "type": "SecureString",
                "value": "<account key>"
              }
            }
          }
        }
        

Pesan kesalahan: Pelanggaran batasan indeks unik

  • Gejala: Ketika menyalin data ke Azure Cosmos DB, Anda menerima kesalahan berikut:

    Message=Partition range id 0 | Failed to import mini-batch. Exception was Message: {"Errors":["Encountered exception while executing function. Exception = Error: {\"Errors\":[\"Unique index constraint violation.\"]}...

  • Penyebab: Ada dua kemungkinan penyebabnya:

    • Penyebab 1: Jika menggunakan Sisipkan sebagai perilaku menulis, kesalahan ini berarti bahwa data sumber Anda memiliki baris atau objek dengan ID yang sama.
    • Penyebab 2: Jika menggunakan Upsertsebagai perilaku menulis dan Anda mengatur kunci unik lain ke kontainer, kesalahan ini berarti bahwa data sumber Anda memiliki baris atau objek dengan ID yang berbeda tetapi nilai yang sama untuk kunci unik yang ditentukan.
  • Resolusi:

    • Untuk penyebab 1, atur Upsert sebagai perilaku menulis.
    • Untuk penyebab 2, pastikan bahwa setiap dokumen memiliki nilai yang berbeda untuk kunci unik yang ditentukan.

Pesan kesalahan: Tingkat permintaan besar

  • Gejala: Ketika menyalin data ke Azure Cosmos DB, Anda menerima kesalahan berikut:

    Type=Microsoft.Azure.Documents.DocumentClientException, Message=Message: {"Errors":["Request rate is large"]}

  • Penyebab: Jumlah unit permintaan (RU) yang digunakan lebih besar dari RU yang tersedia yang dikonfigurasi di Azure Cosmos DB. Untuk mempelajari cara Azure Cosmos DB menghitung RU, lihat Unit permintaan di Azure Cosmos DB.

  • Resolusi: Coba salah satu dari dua solusi berikut:

    • Tingkatkan angka RU kontainer ke nilai yang lebih besar di Azure Cosmos DB. Solusi ini akan meningkatkan kinerja aktivitas salin, tetapi akan dikenakan lebih banyak biaya di Azure Cosmos DB.
    • Kurangi writeBatchSize ke nilai yang lebih rendah, seperti 1000, dan kurangi paralelCopies ke nilai yang lebih rendah, seperti 1. Solusi ini akan mengurangi kinerja jalankan salin, tetapi tidak akan dikenakan lebih banyak biaya di Azure Cosmos DB.

Kolom hilang dalam pemetaan kolom

  • Gejala: Saat Anda mengimpor skema untuk Azure Cosmos DB untuk pemetaan kolom, beberapa kolom hilang.

  • Penyebab: Alur Azure Data Factory dan Synapse menyimpulkan skema dari 10 dokumen Azure Cosmos DB pertama. Jika beberapa kolom dokumen atau properti tidak berisi nilai, skema tidak terdeteksi dan akibatnya tidak ditampilkan.

  • Resolusi: Anda dapat menyetel kueri seperti yang diperlihatkan dalam kode berikut untuk memaksa nilai kolom ditampilkan dalam kumpulan hasil dengan nilai kosong. Asumsikan bahwa kolom mustahil hilang dalam 10 dokumen pertama). Atau, Anda dapat menambahkan kolom untuk pemetaan secara manual.

    select c.company, c.category, c.comments, (c.impossible??'') as impossible from c
    

Pesan kesalahan: GuidRepresentation untuk pembaca adalah CSharpLegacy

  • Gejala: Ketika menyalin data dari Azure Cosmos DB MongoAPI atau MongoDB dengan bidang pengidentifikasi unik universal (UUID), Anda menerima kesalahan berikut:

    Failed to read data via MongoDB client., Source=Microsoft.DataTransfer.Runtime.MongoDbV2Connector,Type=System.FormatException, Message=The GuidRepresentation for the reader is CSharpLegacy which requires the binary sub type to be UuidLegacy not UuidStandard.,Source=MongoDB.Bson,’“,

  • Penyebab: Ada dua cara untuk mewakili UUID di Binary JSON (BSON): UuidStardard dan UuidLegacy. Secara default, UuidLegacy digunakan untuk membaca data. Anda akan menerima kesalahan jika data UUID Anda di MongoDB adalah UuidStandard.

  • Resolusi: Dalam string koneksi MongoDB, tambahkan opsi uuidRepresentation=standard. Untuk informasi selengkapnya, lihat string koneksi MongoDB.

Kode kesalahan: CosmosDbSqlApiOperationFailed

  • Pesan: CosmosDbSqlApi operation Failed. ErrorMessage: %msg;.

  • Penyebab: Masalah dengan operasi CosmosDbSqlApi. Ini berlaku untuk konektor Azure Cosmos DB for NoSQL secara khusus.

  • Rekomendasi: Untuk memeriksa detail kesalahan, lihat dokumen bantuan Azure Cosmos DB. Untuk bantuan lebih lanjut, hubungi tim Azure Cosmos DB.

Kode kesalahan: CosmosDbSqlApiPartitionKeyExceedStorage

  • Pesan: The size of data each logical partition can store is limited, current partitioning design and workload failed to store more than the allowed amount of data for a given partition key value.

  • Penyebab: Ukuran data setiap partisi logis terbatas, dan kunci partisi mencapai ukuran maksimum partisi logis Anda.

  • Rekomendasi: Periksa desain partisi Azure Cosmos DB Anda. Untuk informasi selengkapnya, lihat Partisi logis.

Untuk bantuan pemecahan masalah lainnya, coba sumber daya ini: