Partilhar via


Solucionar problemas do conector do formato Parquet no Azure Data Factory e no Azure Synapse

APLICA-SE A: Azure Data Factory Azure Synapse Analytics

Gorjeta

Experimente o Data Factory no Microsoft Fabric, uma solução de análise tudo-em-um para empresas. O Microsoft Fabric abrange tudo, desde a movimentação de dados até ciência de dados, análises em tempo real, business intelligence e relatórios. Saiba como iniciar uma nova avaliação gratuitamente!

Este artigo fornece sugestões para solucionar problemas comuns com o conector de formato Parquet no Azure Data Factory e no Azure Synapse.

Código de erro: ParquetJavaInvocationException

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

  • Causas e recomendações: Diferentes causas podem levar a este erro. Confira abaixo a lista para possível análise de causa e recomendação relacionada.

    Análise de causa Recomendação
    Quando a mensagem de erro contém as cadeias de caracteres "java.lang.OutOfMemory", "Java heap space" e "doubleCapacity", geralmente é um problema de gerenciamento de memória em uma versão antiga do Integration Runtime. Se você estiver usando IR auto-hospedado e a versão for anterior a 3.20.7159.1, recomendamos que você atualize para a versão mais recente.
    Quando a mensagem de erro contém a cadeia de caracteres "java.lang.OutOfMemory", o tempo de execução da integração não tem recursos suficientes para processar os arquivos. Limite as execuções simultâneas no tempo de execução da integração. Para IR auto-hospedado, dimensione para uma máquina poderosa com memória igual ou superior a 8 GB.
    Quando a mensagem de erro contém a cadeia de caracteres "NullPointerReference", pode ser um erro transitório. Repita a operação. Se o problema persistir, contacte o suporte.

Código de erro: ParquetInvalidFile

  • Mensagem: File is not a valid Parquet file.

  • Causa: Este é um problema de arquivo Parquet.

  • Recomendação: Verifique se a entrada é um arquivo Parquet válido.

Código de erro: ParquetNotSupportedType

Código de erro: ParquetMissedDecimalPrecisionScale

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

  • Causa: A precisão numérica e a escala foram analisadas, mas nenhuma informação foi fornecida.

  • Recomendação: A fonte não retorna as informações corretas de precisão e escala. Verifique a coluna de problemas para obter informações.

Código de erro: ParquetInvalidDecimalPrecisionScale

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

  • Causa: O esquema é inválido.

  • Recomendação: Verifique a precisão e a escala na coluna de questões.

Código de erro: ParquetColumnNotFound

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

  • Causa: O esquema de origem é uma incompatibilidade com o esquema do coletor.

  • Recomendação: Verifique os mapeamentos na atividade. Certifique-se de que a coluna de origem pode ser mapeada para a coluna de coletor correta.

Código de erro: ParquetInvalidDataFormat

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

  • Causa: os dados não podem ser convertidos no tipo especificado em mappings.source.

  • Recomendação: Verifique novamente os dados de origem ou especifique o tipo de dados correto para esta coluna no mapeamento da coluna de atividade de cópia. Para obter mais informações, consulte Formatos de arquivo suportados e codecs de compactação pela atividade de cópia.

Código de erro: ParquetDataCountNotMatchColumnCount

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

  • Causa: uma incompatibilidade entre a contagem de colunas de origem e a contagem de colunas de coletor.

  • Recomendação: Verifique novamente se a contagem da coluna de origem é a mesma que a contagem da coluna do coletor em 'mapeamento'.

Código de erro: ParquetDataTypeNotMatchColumnType

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

  • Causa: os dados da origem não podem ser convertidos para o tipo definido no coletor.

  • Recomendação: Especifique um tipo correto em mapping.sink.

Código de erro: ParquetBridgeInvalidData

  • Mensagem: %message;

  • Causa: o valor dos dados excedeu o limite.

  • Recomendação: Tente novamente a operação. Se o problema persistir, contacte-nos.

Código de erro: ParquetUnsupportedInterpretation

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

  • Causa: este cenário não é suportado.

  • Recomendação: 'ParquetInterpretFor' não deve ser 'sparkSql'.

Código de erro: ParquetUnsupportFileLevelCompressionOption

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

  • Causa: este cenário não é suportado.

  • Recomendação: Remova 'CompressionType' na carga útil.

Código de erro: UserErrorJniException

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

  • Causa: Não é possível criar uma JVM (Java Virtual Machine) porque alguns argumentos ilegais (globais) estão definidos.

  • Recomendação: Faça login na máquina que hospeda cada nó do seu IR auto-hospedado. Verifique se a variável de sistema está definida corretamente, da seguinte forma: _JAVA_OPTIONS "-Xms256m -Xmx16g" with memory bigger than 8 G. Reinicie todos os nós IR e, em seguida, execute novamente o pipeline.

Estouro aritmético

  • Sintomas: Ocorreu uma mensagem de erro quando copia ficheiros Parquet: Message = Arithmetic Overflow., Source = Microsoft.DataTransfer.Common

  • Causa: Atualmente, apenas o decimal de precisão <= 38 e o comprimento da parte <inteira = 20 são suportados quando você copia arquivos do Oracle para o Parquet.

  • Resolução: como solução alternativa, você pode converter quaisquer colunas com esse problema em VARCHAR2.

Sem constante de enum

  • Sintomas: Ocorreu uma mensagem de erro quando copia dados para o formato Parquet: java.lang.IllegalArgumentException:field ended by &apos;;&apos;, ou: java.lang.IllegalArgumentException:No enum constant org.apache.parquet.schema.OriginalType.test.

  • Causa:

    O problema pode ser causado por espaços em branco ou caracteres especiais sem suporte (como,;{}()\n\t=) no nome da coluna, porque o Parquet não suporta esse formato.

    Por exemplo, um nome de coluna como contoso(test) analisará o tipo entre colchetes do código Tokenizer st = new Tokenizer(schemaString, " ;{}()\n\t");. O erro é lançado porque não existe esse tipo de "teste".

    Para verificar os tipos suportados, vá para o site do GitHub apache/parquet-mr.

  • Resolução:

    Verifique novamente se:

    • Há espaços em branco no nome da coluna da pia.
    • A primeira linha com espaços em branco é usada como o nome da coluna.
    • O tipo OriginalType é suportado. Tente evitar o uso destes caracteres especiais: ,;{}()\n\t=.

Código de erro: ParquetDateTimeExceedLimit

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

  • Causa: Se o valor datetime for '0001-01-01 00:00:00', isso pode ser causado pela diferença entre o Calendário Juliano e o Calendário Gregoriano. Para mais detalhes, consulte Diferença entre datas do calendário gregoriano juliano e proléptico.

  • Resolução: verifique o valor dos ticks e evite usar o valor datetime '0001-01-01 00:00:00'.

Código de erro: ParquetInvalidColumnName

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

  • Causa: O nome da coluna contém caracteres inválidos.

  • Resolução: adicione ou modifique o mapeamento de coluna para tornar o nome da coluna do coletor válido.

O arquivo criado pela atividade de cópia de dados extrai uma tabela que contém uma coluna varbinary (max)

  • Sintomas: O arquivo Parquet criado pela atividade de cópia de dados extrai uma tabela que contém uma coluna varbinary (max).

  • Causa: Este problema é causado pelo bug da biblioteca Parquet-mr de ler coluna grande.

  • Resolução: tente gerar arquivos menores (tamanho < 1G) com uma limitação de 1000 linhas por arquivo.

Para obter mais ajuda na solução de problemas, tente estes recursos: