Compartilhar via


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

APLICA-SE A: Azure Data Factory Azure Synapse Analytics

Dica

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

Este artigo apresenta sugestões para solucionar problemas comuns do 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: causas diferentes podem levar a esse erro. Marque a lista abaixo para obter a possível análise de causa e a recomendação relacionada.

    Análise da causa Recomendação
    Quando a mensagem de erro contém as strings "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 sequência "java.lang.OutOfMemory", o tempo de execução de integração não tem recursos suficientes para processar os arquivos. Limite as execuções simultâneas no runtime de integração. Para IR auto-hospedado, expanda para uma máquina poderosa com memória igual ou superior a 8 GB.
    Quando a mensagem de erro contém a string "NullPointerReference", pode ser um erro temporário. Repita a operação. Se o problema persistir, contate o Suporte.

Código de erro: ParquetInvalidFile

  • Mensagem: File is not a valid Parquet file.

  • Causa: esse é 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 e a escala do número 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 do problema para obter as 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 da coluna do problema.

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. Verifique se 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 os dados de origem ou especifique o tipo de dados correto para essa coluna no mapeamento de coluna da atividade de cópia. Para saber mais, confira Formatos de arquivo e codecs de compactação com suporte 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 do coletor.

  • Recomendação: verifique se a contagem de colunas de origem é a mesma que a contagem de colunas 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 que é definido no coletor.

  • Recomendação: especifique um tipo correto no mapping.sink.

Código de erro: ParquetBridgeInvalidData

  • Mensagem: %message;

  • Causa: o valor dos dados excedeu o limite.

  • Recomendação: repita a operação. Se o problema persistir, entre em contato conosco.

Código de erro: ParquetUnsupportedInterpretation

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

  • Causa: não há suporte para esse cenário.

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

Código de erro: ParquetUnsupportFileLevelCompressionOption

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

  • Causa: não há suporte para esse cenário.

  • Recomendação: remova “CompressionType” do payload.

Código de erro: UserErrorJniException

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

  • Causa: uma JVM (máquina virtual Java) não pode ser criada porque alguns argumentos (globais) ilegais estão definidos.

  • Recomendação: faça logon no computador que hospeda cada nó do seu IR auto-hospedado. Verifique se a variável do sistema está definida corretamente, da seguinte maneira: _JAVA_OPTIONS "-Xms256m -Xmx16g" with memory bigger than 8 G. Reinicie todos os nós de IR e execute novamente o pipeline.

Estouro aritmético

  • Sintomas: Ocorreu uma mensagem de erro ao copiar os arquivos Parquet: Message = Arithmetic Overflow., Source = Microsoft.DataTransfer.Common

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

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

Nenhuma constante de enumeração

  • Sintomas: a mensagem de erro ocorreu quando você 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 não suportados (como;{}()\n\t=) no nome da coluna, porque Parquet não oferece suporte a 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 é gerado porque não existe esse tipo de "teste".

    Para verificar os tipos com suporte, vá para o site do apache/parquet-mrdo GitHub.

  • Resolução:

    Verifique novamente se:

    • Existem espaços em branco no nome da coluna do coletor.
    • A primeira linha com espaços em branco é usada como o nome da coluna.
    • O tipo OriginalType é compatível. 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 de datetime for "0001-01-01 00:00:00", ele pode ser causado pelas diferenças entre o calendário Juliano e o Gregoriano. Para mais detalhes, confira Diferença entre as datas do calendário Juliano e Gregoriano.

  • Resolução: verifique o valor de tiques e evite usar o valor de 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: esse problema é causado pelo bug da biblioteca Parquet-mr de leitura de colunas grandes.

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

Para obter mais ajuda com a solução de problemas, experimente estes recursos: