Share via


Azure Data Factory ve Azure Synapse'te Parquet biçim 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'te Parquet biçim bağlayıcısı ile ilgili yaygın sorunları gidermeye yönelik öneriler sağlanır.

Hata kodu: ParquetJavaInvocationException

  • İleti: An error occurred when invoking java, message: %javaException;.

  • Nedenler ve öneriler: Farklı nedenler bu hataya neden olabilir. Olası neden analizi ve ilgili öneri için aşağıdaki listeye bakın.

    Neden analizi Öneri
    Hata iletisi "java.lang.OutOfMemory", "Java yığın alanı" ve "doubleCapacity" dizelerini içerdiğinde, bu genellikle Integration Runtime'ın eski bir sürümünde bir bellek yönetimi sorunudur. Şirket içinde barındırılan IR kullanıyorsanız ve sürüm 3.20.7159.1'den eskiyse en son sürüme yükseltmenizi öneririz.
    Hata iletisi "java.lang.OutOfMemory" dizesini içerdiğinde, tümleştirme çalışma zamanının dosyaları işlemek için yeterli kaynağı yoktur. Tümleştirme çalışma zamanında eşzamanlı çalıştırmaları sınırlayın. Şirket içinde barındırılan IR için ölçeği 8 GB'a eşit veya daha büyük bellek içeren güçlü bir makineye ölçeklendirin.
    Hata iletisi "NullPointerReference" dizesini içeriyorsa, geçici bir hata olabilir. İşlemi yeniden deneyin. Sorun devam ederse desteğe başvurun.

Hata kodu: ParquetInvalidFile

  • İleti: File is not a valid Parquet file.

  • Neden: Bu bir Parquet dosyası sorunudur.

  • Öneri: Girişin geçerli bir Parquet dosyası olup olmadığını denetleyin.

Hata kodu: ParquetNotSupportedType

Hata kodu: ParquetMissedDecimalPrecisionScale

  • İleti: Decimal Precision or Scale information is not found in schema for column: %column;.

  • Neden: Sayı duyarlılığı ve ölçeği ayrıştırıldı, ancak böyle bir bilgi sağlanmadı.

  • Öneri: Kaynak doğru duyarlık ve ölçek bilgilerini döndürmez. Bilgi için sorun sütununa bakın.

Hata kodu: ParquetInvalidDecimalPrecisionScale

  • İleti: Invalid Decimal Precision or Scale. Precision: %precision; Scale: %scale;.

  • Neden: Şema geçersiz.

  • Öneri: Duyarlık ve ölçek için sorun sütununu denetleyin.

Hata kodu: ParquetColumnNotFound

  • İleti: Column %column; does not exist in Parquet file.

  • Neden: Kaynak şema, havuz şemasıyla uyuşmazlıktır.

  • Öneri: Etkinlikteki eşlemeleri denetleyin. Kaynak sütunun doğru havuz sütununa eşlendiğinden emin olun.

Hata kodu: ParquetInvalidDataFormat

  • İleti: Incorrect format of %srcValue; for converting to %dstType;.

  • Neden: Veriler mappings.source dosyasında belirtilen türe dönüştürülemez.

  • Öneri: Kopyalama etkinliği sütun eşlemesinde kaynak verileri iki kez denetleyin veya bu sütun için doğru veri türünü belirtin. Daha fazla bilgi için bkz . Kopyalama etkinliği tarafından desteklenen dosya biçimleri ve sıkıştırma codec'leri.

Hata kodu: ParquetDataCountNotMatchColumnCount

  • İleti: The data count in a row '%sourceColumnCount;' does not match the column count '%sinkColumnCount;' in given schema.

  • Neden: Kaynak sütun sayısı ile havuz sütun sayısı arasındaki uyuşmazlık.

  • Öneri: Kaynak sütun sayısının 'eşleme' içindeki havuz sütun sayısıyla aynı olduğundan emin olmak için iki kez denetleyin.

Hata kodu: ParquetDataTypeNotMatchColumnType

  • İleti: The data type %srcType; is not match given column type %dstType; at column '%columnIndex;'.

  • Neden: Kaynaktaki veriler havuz içinde tanımlanan türe dönüştürülemez.

  • Öneri: mapping.sink dosyasında doğru bir tür belirtin.

Hata kodu: ParquetBridgeInvalidData

  • İleti: %message;

  • Neden: Veri değeri sınırı aştı.

  • Öneri: İşlemi yeniden deneyin. Sorun devam ederse bizimle iletişime geçin.

Hata kodu: ParquetUnsupportedInterpretation

  • İleti: The given interpretation '%interpretation;' of Parquet format is not supported.

  • Neden: Bu senaryo desteklenmiyor.

  • Öneri: 'ParquetInterpretFor' 'sparkSql' olmamalıdır.

Hata kodu: ParquetUnsupportFileLevelCompressionOption

  • İleti: File level compression is not supported for Parquet.

  • Neden: Bu senaryo desteklenmiyor.

  • Öneri: Yükteki 'CompressionType' öğesini kaldırın.

Hata kodu: UserErrorJniException

  • İleti: Cannot create JVM: JNI return code [-6][JNI call failed: Invalid arguments.]

  • Neden: Bazı geçersiz (genel) bağımsız değişkenler ayarlandığından Java Sanal Makinesi (JVM) oluşturulamıyor.

  • Öneri: Şirket içinde barındırılan IR'nizin her düğümünü barındıran makinede oturum açın. Sistem değişkeninin aşağıdaki gibi doğru ayarlandığından emin olun: _JAVA_OPTIONS "-Xms256m -Xmx16g" with memory bigger than 8 G. Tüm IR düğümlerini yeniden başlatın ve işlem hattını yeniden çalıştırın.

Aritmetik taşma

  • Belirtiler: Parquet dosyalarını kopyalarken hata iletisi oluştu: Message = Arithmetic Overflow., Source = Microsoft.DataTransfer.Common

  • Neden: Şu anda dosyaları Oracle'dan Parquet'e kopyaladığınızda yalnızca duyarlık <ondalık değeri = 38 ve tamsayı bölümü <= 20 uzunluğu desteklenir.

  • Çözüm: Geçici bir çözüm olarak, bu sorunla tüm sütunları VARCHAR2 dönüştürebilirsiniz.

Sabit sabiti yok

  • Belirtiler: Verileri Parquet biçimine kopyaladığınızda hata iletisi oluştu: java.lang.IllegalArgumentException:field ended by &apos;;&apos;, veya: java.lang.IllegalArgumentException:No enum constant org.apache.parquet.schema.OriginalType.test.

  • Neden:

    Sorun, boşluklardan veya desteklenmeyen özel karakterlerden (örneğin;{}Sütun adında ()\n\t=) çünkü Parquet böyle bir biçimi desteklemez.

    Örneğin, contoso(test) gibi bir sütun adı türü koddan Tokenizer st = new Tokenizer(schemaString, " ;{}()\n\t");köşeli ayraç içinde ayrıştıracaktır. Böyle bir "test" türü olmadığından hata oluşur.

    Desteklenen türleri denetlemek için GitHub apache/parquet-mr sitesine gidin.

  • Çözüm:

    Aşağıdakileri yapıp yapmadığını görmek için iki kez denetleyin:

    • Havuz sütun adında boşluklar vardır.
    • Sütun adı olarak boşluklu ilk satır kullanılır.
    • OriginalType türü desteklenir. Şu özel karakterleri kullanmaktan kaçınmaya çalışın: ,;{}()\n\t=.

Hata kodu: ParquetDateTimeExceedLimit

  • İleti: The Ticks value '%ticks;' for the datetime column must be between valid datetime ticks range -621355968000000000 and 2534022144000000000.

  • Neden: Tarih saat değeri '0001-01-01 00:00:00' ise, bunun nedeni Jülyen Takvim ile Gregoryen Takvim arasındaki fark olabilir. Daha fazla ayrıntı için Julian ve proleptik Gregoryen takvim tarihleri arasındaki fark bölümüne bakın.

  • Çözüm: Değer çizgisi değerini denetleyin ve '0001-01-01 00:00:00' tarih saat değerini kullanmaktan kaçının.

Hata kodu: ParquetInvalidColumnName

  • İleti: The column name is invalid. Column name cannot contain these character:[,;{}()\n\t=]

  • Neden: Sütun adı geçersiz karakterler içeriyor.

  • Çözüm: Havuz sütun adını geçerli hale getirmek için sütun eşlemesini ekleyin veya değiştirin.

Veri kopyalama etkinliği tarafından oluşturulan dosya, varbinary (max) sütunu içeren bir tabloyu ayıklar

  • Belirtiler: Kopyalama verileri etkinliği tarafından oluşturulan Parquet dosyası, varbinary (max) sütunu içeren bir tabloyu ayıklar.

  • Neden: Bu sorun, Parquet-mr kitaplığında büyük sütun okuma hatasından kaynaklanır.

  • Çözüm: Dosya başına 1000 satır sınırlaması olan daha küçük dosyalar (boyut < 1G) oluşturmayı deneyin.

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