Memecahkan masalah konektor format Parquet 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 berisi saran untuk memecahkan masalah umum terkait konektor format Parquet di Azure Data Factory dan Azure Synapse.

Kode kesalahan: ParquetJavaInvocationException

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

  • Penyebab dan rekomendasi: Penyebab yang berbeda dapat menyebabkan kesalahan ini. Periksa daftar di bawah ini untuk kemungkinan analisis penyebab dan rekomendasi terkait.

    Analisis penyebab Rekomendasi
    Ketika pesan kesalahan berisi untai (karakter) "java.lang.OutOfMemory", "Java heap space", dan "doubleCapacity", biasanya masalah manajemen memori dalam versi lama runtime integrasi. Jika menggunakan IR yang dihost sendiri dan versinya lebih lama dari 3.20.7159.1, kami sarankan Anda meningkatkan ke versi terbaru.
    Ketika pesan kesalahan berisi untai (karakter) "java.lang.OutOfMemory", runtime integrasi tidak memiliki cukup sumber daya untuk memproses file. Batasi waktu proses bersamaan pada runtime integrasi. Untuk IR yang dihost{i>
    Ketika pesan kesalahan berisi untai (karakter) "NullPointerReference", penyebabnya mungkin merupakan kesalahan sementara. Coba lagi operasi. Jika masalah masih berlangsung, hubungi dukungan.

Kode kesalahan: ParquetInvalidFile

  • Pesan: File is not a valid Parquet file.

  • Penyebab: Ini adalah masalah file Parquet.

  • Rekomendasi: Periksa untuk melihat apakah input adalah file Parket yang valid.

Kode kesalahan: ParquetNotSupportedType

Kode kesalahan: ParquetMissedDecimalPrecisionScale

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

  • Penyebab: Presisi angka dan skala diurai, tetapi tidak ada informasi tersebut yang diberikan.

  • Rekomendasi: Sumber tidak menampilkan informasi presisi dan skala yang benar. Periksa kolom masalah untuk informasi tersebut.

Kode kesalahan: ParquetInvalidDecimalPrecisionScale

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

  • Penyebab: Skema tidak valid.

  • Rekomendasi: Periksa kolom masalah untuk presisi dan skala.

Kode kesalahan: ParquetColumnNotFound

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

  • Penyebab: Skema sumber tidak cocok dengan skema sink.

  • Rekomendasi: Periksa pemetaan dalam aktivitas. Pastikan bahwa kolom sumber dapat dipetakan ke kolom sink yang benar.

Kode kesalahan: ParquetInvalidDataFormat

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

  • Penyebab: Data tidak dapat dikonversi ke dalam jenis yang ditentukan dalam mappings.source.

  • Rekomendasi: Periksa kembali data sumber atau tentukan jenis data yang benar untuk kolom ini di pemetaan kolom aktivitas penyalinan. Untuk informasi selengkapnya, lihat Format file yang didukung dan kodek kompresi dengan aktivitas salin.

Kode kesalahan: ParquetDataCountNotMatchColumnCount

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

  • Penyebab: Ketidakcocokan antara jumlah kolom sumber dan jumlah kolom sink.

  • Rekomendasi: Periksa kembali untuk memastikan bahwa jumlah kolom sumber sama dengan jumlah kolom sink di 'pemetaan'.

Kode kesalahan: ParquetDataTypeNotMatchColumnType

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

  • Penyebab: Data dari sumber tidak dapat dikonversi ke jenis yang ditentukan di sink.

  • Rekomendasi: Tentukan jenis yang benar di mapping.sink.

Kode kesalahan: ParquetBridgeInvalidData

  • Pesan: %message;

  • Penyebab: Nilai data telah melebihi batas.

  • Rekomendasi: Coba lagi operasi. Jika masalah terus berlanjut, hubungi kami.

Kode kesalahan: ParquetUnsupportedInterpretasi

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

  • Penyebab: Skenario ini tidak didukung.

  • Rekomendasi: 'ParquetInterpretFor' tidak boleh 'sparkSql'.

Kode kesalahan: ParquetUnsupportFileLevelCompressionOption

  • Pesan: File level compression is not supported for Parquet.

  • Penyebab: Skenario ini tidak didukung.

  • Rekomendasi: Hapus 'CompressionType' di payload.

Kode kesalahan: UserErrorJniException

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

  • Penyebab: Java Virtual Machine(JVM) tidak dapat dibuat karena beberapa argumen ilegal (global) ditetapkan.

  • Rekomendasi: Masuk ke mesin yang menghosting setiap node IR yang dihost sendiri. Periksa untuk memastikan bahwa variabel sistem diatur dengan benar, sebagai berikut: _JAVA_OPTIONS "-Xms256m -Xmx16g" with memory bigger than 8 G. Mulai ulang semua simpul IR, lalu jalankan ulang alur.

Luapan aritmatika

  • Gejala: Pesan kesalahan terjadi saat Anda menyalin file Parquet: Message = Arithmetic Overflow., Source = Microsoft.DataTransfer.Common

  • Penyebab: Saat ini hanya desimal presisi <= 38 dan panjang bagian bilangan bulat <= 20 yang didukung saat menyalin file dari Oracle ke Parket.

  • Resolusi: Sebagai solusinya, Anda dapat mengonversi kolom apa pun dengan masalah ini menjadi VARCHAR2.

Tidak ada konstanta enum

  • Gejala: Pesan kesalahan terjadi saat Anda menyalin data ke format Parquet: java.lang.IllegalArgumentException:field ended by &apos;;&apos;, atau: java.lang.IllegalArgumentException:No enum constant org.apache.parquet.schema.OriginalType.test.

  • Penyebab:

    Masalah ini dapat disebabkan oleh spasi putih atau karakter khusus yang tidak didukung (seperti,; {}()\n\t=) dalam nama kolom, karena Parquet tidak mendukung format seperti itu.

    Misalnya, nama kolom seperti contoso(test) akan mengurai jenis dalam tanda kurung dari kodeTokenizer st = new Tokenizer(schemaString, " ;{}()\n\t");. Kesalahan muncul karena tidak ada jenis "tes" seperti itu.

    Untuk memeriksa jenis yang didukung, buka situs GitHub apache /parquet-mr site.

  • Resolusi:

    Periksa kembali untuk melihat apakah:

    • Ada spasi putih dalam nama kolom sink.
    • Baris pertama dengan spasi putih digunakan sebagai nama kolom.
    • Jenis OriginalType didukung. Cobalah untuk menghindari penggunaan karakter khusus ini: ,;{}()\n\t=.

Kode kesalahan: ParquetDateTimeExceedLimit

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

  • Penyebab: Jika nilai datetime adalah '0001-01-01 00:00:00', hal ini bisa disebabkan oleh perbedaan antara kalender Julian dan kalender Gregorian. Untuk lebih jelasnya, referensi Perbedaan antara Julian dan tanggal kalender Gregorian proleptik.

  • Rekomendasi: Periksa nilai tanda dan hindari menggunakan nilai datetime '0001-01-01 00:00:00'.

Kode kesalahan: ParquetInvalidColumnName

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

  • Penyebab: Nama kolom berisi karakter yang tidak valid.

  • Resolusi: Menambahkan atau memodifikasi pemetaan kolom untuk membuat nama kolom sink valid.

File yang dibuat oleh aktivitas data salinan mengekstrak tabel yang berisi kolom varbinary (maks)

  • Gejala: File Parquet yang dibuat oleh aktivitas data salinan mengekstrak tabel yang berisi kolom varbinary (maks).

  • Penyebab: Masalah ini disebabkan oleh bug pustaka Parquet-mr membaca kolom besar.

  • Resolusi: Coba buat file yang lebih kecil (ukuran < 1G) dengan batasan 1000 baris per file.

Untuk bantuan pemecahan masalah lainnya, coba sumber daya ini: