Esta página explica como resolver problemas comuns ao consultar tabelas Apache Hudi no EMR com Spark e Hive.
Dados duplicados ao consultar com Spark
Sintoma: O Spark retorna registros duplicados na consulta a uma tabela Hudi.
Causa: A leitura de dados Hudi pela API Spark Data Source não tem suporte e ignora a lógica de mesclagem do Hudi, o que causa duplicações.
Solução: Adicione a seguinte configuração ao comando de consulta do Spark:
spark.sql.hive.convertMetastoreParquet=false
Dados duplicados ao consultar com Hive
Sintoma: O Hive retorna registros duplicados na consulta a uma tabela Hudi.
Causa: O Hive usa HiveCombineInputFormat por padrão. Esse formato de entrada não invoca o formato personalizado da tabela. Consequentemente, a lógica de mesclagem do Hudi é ignorada e o sistema retorna registros duplicados.
Solução: Adicione o seguinte parâmetro ao comando de consulta do Hive:
set hive.input.format = org.apache.hudi.hadoop.hive.HoodieCombineHiveInputFormat
Pruning de partição não funciona ao consultar com Spark
Sintoma: As consultas do Spark verificam todas as partições em vez de aplicar o pruning nas relevantes.
Causa: Se o nome de um campo de partição contiver uma barra (/), o Spark detecta um número de níveis de partição diferente do real. Essa incompatibilidade impede o funcionamento do pruning de partição.
Solução: Adicione o seguinte parâmetro ao comando de gravação da API DataFrame do Spark para a tabela Hudi:
hoodie.datasource.write.partitionpath.urlencode= true
Erro "xxx is only supported with v2 tables" ao executar ALTER TABLE no Spark
Sintoma: A execução de uma instrução ALTER TABLE em uma tabela Hudi no Spark retorna o erro xxx is only supported with v2 tables.
Causa: hoodie.schema.on.read.enable não está definido como true. O recurso de evolução de schema Hudi-Spark exige essa configuração antes da execução de ALTER TABLE.
Solução: Adicione o seguinte parâmetro à instrução ALTER TABLE:
set hoodie.schema.on.read.enable=true
Para sintaxe compatível, consulte Evolução de schema e descrição de sintaxe do SparkSQL na documentação do Apache Hudi.