Share via


Azure Data Factory ve Azure Synapse'te Azure Cosmos DB bağlayıcısı sorunlarını giderme

UYGULANANLAR: Azure Data Factory Azure Synapse Analytics

Bahşiş

Kuruluşlar için hepsi bir arada analiz çözümü olan Microsoft Fabric'te Data Factory'yi deneyin. Microsoft Fabric , veri taşımadan veri bilimine, gerçek zamanlı analize, iş zekasına ve raporlamaya kadar her şeyi kapsar. Yeni bir deneme sürümünü ücretsiz olarak başlatmayı öğrenin!

Bu makalede, Azure Data Factory ve Azure Synapse'de Azure Cosmos DB ve NoSQL için Azure Cosmos DB bağlayıcılarıyla ilgili yaygın sorunları gidermeye yönelik öneriler sağlanır.

Hata iletisi: İstek boyutu çok büyük

  • Belirtiler: Azure Cosmos DB'ye varsayılan yazma toplu iş boyutuyla veri kopyaladığınızda aşağıdaki hatayı alırsınız: Request size is too large.

  • Neden: Azure Cosmos DB tek bir isteğin boyutunu 2 MB ile sınırlar. Formül istek boyutu = tek belge boyutu * yazma toplu iş boyutudur. Belgenizin boyutu büyükse, varsayılan davranış istek boyutunun çok büyük olmasına neden olur.

  • Çözüm:
    Yazma toplu iş boyutunu ayarlayabilirsiniz. Kopyalama etkinliği havuzundaki yazma toplu iş boyutu değerini azaltın (varsayılan değer 10000'dir).
    Yazma toplu iş boyutu değerini 1 olarak küçültme işlemi yine de işe yaramazsa Azure Cosmos DB SQL API'nizi V2'den V3'e değiştirin. Bu yapılandırmayı tamamlamak için iki seçeneğiniz vardır:

    • Seçenek 1: Kimlik doğrulama türünüzü hizmet sorumlusu veya sistem tarafından atanan yönetilen kimlik veya kullanıcı tarafından atanan yönetilen kimlik olarak değiştirin.
    • 2. Seçenek: Hesap anahtarı kimlik doğrulamasını kullanmaya devam etmek istiyorsanız şu adımları izleyin:
      1. NoSQL için Azure Cosmos DB bağlı hizmeti oluşturun.

      2. Bağlı hizmeti aşağıdaki şablonla güncelleştirin.

        {
          "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>"
              }
            }
          }
        }
        

Hata iletisi: Benzersiz dizin kısıtlaması ihlali

  • Belirtiler: Azure Cosmos DB'ye veri kopyaladığınızda aşağıdaki hatayı alırsınız:

    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.\"]}...

  • Neden: İki olası neden vardır:

    • Neden 1: Yazma davranışı olarak Insert kullanırsanız, bu hata kaynak verilerinizin aynı kimlikte satır veya nesnelere sahip olduğu anlamına gelir.
    • Neden 2: Yazma davranışı olarak Upsert kullanırsanız ve kapsayıcıya başka bir benzersiz anahtar ayarlarsanız, bu hata kaynak verilerinizde farklı kimliklere sahip satırlar veya nesneler olduğu ancak tanımlanan benzersiz anahtar için aynı değerin olduğu anlamına gelir.
  • Çözüm:

    • 1. neden için Yazma davranışı olarak Upsert'i ayarlayın.
    • Neden 2 için, her belgenin tanımlı benzersiz anahtar için farklı bir değere sahip olduğundan emin olun.

Hata iletisi: İstek oranı büyük

  • Belirtiler: Azure Cosmos DB'ye veri kopyaladığınızda aşağıdaki hatayı alırsınız:

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

  • Neden: Kullanılan istek birimi (RU) sayısı, Azure Cosmos DB'de yapılandırılan kullanılabilir RU'lardan daha fazladır. Azure Cosmos DB'nin RU'ları nasıl hesapladiğini öğrenmek için bkz . Azure Cosmos DB'de birim isteme.

  • Çözüm: Aşağıdaki iki çözümden birini deneyin:

    • Azure Cosmos DB'de kapsayıcı RU sayısını daha büyük bir değere artırın. Bu çözüm kopyalama etkinliği performansını artırır, ancak Azure Cosmos DB'de daha fazla maliyete neden olur.
    • writeBatchSize değerini 1000 gibi daha küçük bir değere, parallelCopies değerini ise 1 gibi daha küçük bir değere azaltın. Bu çözüm kopyalama çalıştırması performansını azaltır, ancak Azure Cosmos DB'de daha fazla maliyete neden olmaz.

Sütun eşlemesinde sütunlar eksik

  • Belirtiler: Sütun eşlemesi için Azure Cosmos DB şemasını içeri aktardığınızda bazı sütunlar eksiktir.

  • Neden: Azure Data Factory ve Synapse işlem hatları ilk 10 Azure Cosmos DB belgesinden şemayı çıkarsar. Bazı belge sütunları veya özellikleri değer içermiyorsa şema algılanır ve sonuç olarak görüntülenmez.

  • Çözüm: Sütun değerlerinin sonuç kümesinde boş değerlerle görüntülenmesini zorlamak için sorguyu aşağıdaki kodda gösterildiği gibi ayarlayabilirsiniz. İlk 10 belgede imkansız sütunun eksik olduğunu varsayalım). Alternatif olarak, eşleme için sütunu el ile ekleyebilirsiniz.

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

Hata iletisi: Okuyucunun GuidRepresentation değeri CSharpLegacy

  • Belirtiler: Azure Cosmos DB MongoAPI veya MongoDB'den evrensel olarak benzersiz tanımlayıcı (UUID) alanıyla veri kopyaladığınızda, aşağıdaki hatayı alırsınız:

    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,’“,

  • Neden: İkili JSON'da (BSON) UUID'yi temsil etmenin iki yolu vardır: UuidStardard ve UuidLegacy. Varsayılan olarak, UuidLegacy verileri okumak için kullanılır. MongoDB'deki UUID verileriniz UuidStandard ise bir hata alırsınız.

  • Çözüm: MongoDB bağlantı dizesi uuidRepresentation=standard seçeneğini ekleyin. Daha fazla bilgi için bkz. MongoDB bağlantı dizesi.

Hata kodu: CosmosDbSqlApiOperationFailed

  • İleti: CosmosDbSqlApi operation Failed. ErrorMessage: %msg;.

  • Neden: CosmosDbSqlApi işlemiyle ilgili bir sorun. Bu, özellikle NoSQL için Azure Cosmos DB bağlayıcısı için geçerlidir.

  • Öneri: Hata ayrıntılarını denetlemek için bkz . Azure Cosmos DB yardım belgesi. Daha fazla yardım için Azure Cosmos DB ekibine başvurun.

Hata kodu: CosmosDbSqlApiPartitionKeyExceed Depolama

  • İleti: 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.

  • Neden: Her mantıksal bölümün veri boyutu sınırlıdır ve bölüm anahtarı mantıksal bölümünüzün en büyük boyutuna ulaştı.

  • Öneri: Azure Cosmos DB bölüm tasarımınızı denetleyin. Daha fazla bilgi için bkz . Mantıksal bölümler.

Daha fazla sorun giderme yardımı için şu kaynakları deneyin: