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
Mensagem:
Unsupported Parquet type. PrimitiveType: %primitiveType; OriginalType: %originalType;.
Causa: O formato Parquet não é suportado nos pipelines do Azure Data Factory e Synapse.
Recomendação: Verifique novamente os dados de origem indo para Formatos de arquivo suportados 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 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 ';'
, 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.
Conteúdos relacionados
Para obter mais ajuda na solução de problemas, tente estes recursos: