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
Mensagem:
Unsupported Parquet type. PrimitiveType: %primitiveType; OriginalType: %originalType;.
Causa: o formato parquet não tem suporte nos pipelines do Azure Data Factory e do Synapse.
Recomendação: verifique novamente os dados de origem acessando Formatos de arquivo com suporte e codecs de compactação por atividade de cópia.
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 ';'
, 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.
Conteúdo relacionado
Para obter mais ajuda com a solução de problemas, experimente estes recursos: