Observando duplicatas usando o sqoop com Oozie
Criei um programa sqoop para importar dados do MySQL para HDFS usando um trabalho pré-construído do sqoop:
sqoop job -fs $driver_path -D mapreduce.map.java.opts=" -Duser.timezone=Europe/Paris"\
--create job_parquet_table -- import -m $nodes_number\
--connect jdbc:mysql://$server:$port/$database --username $username --password-file $pass_file\
--target-dir $destination_dir --table $table --as-parquetfile --append\
--incremental append --check-column $id_column_names --last-value 1\
--fields-terminated-by , --escaped-by \\ --enclosed-by '\"'
Também construí um programa de ignição que permite monitorar a importação do sqoop. Neste, medi o max_id (SELECT Max (ID) da tabela que está sendo importada, o sqoop incremental.last.value, o número de registros (SELECT count ()), o número de registros distintos (contagem SELECT (ID distinto)) e a porcentagem de duplicatas (definida como contagem SELECT () - contagem (ID distinto) / contagem (*) * 100).
Quando importo os dados manualmente, executando o trabalho sqoop:
sqoop-job --exec job_parquet_$table -- --username edastatnew --password edastatnew
Está tudo certo, não tenho duplicatas e os dados são perfeitamente importados
No entanto, quando uso o Oozie para agendar o trabalho do sqoop, observei que o sqoopincremental.last.value é atualizado incorretamente, o que causa duplicatas nos meus dados. Aqui está o meu monitoramento:
Como você pode ver, o max_ID não corresponde ao sqoop_last_value em momentos diferentes da experiência. Concluí que, ao usar o Oozie, o sqoop incremenatal.last.value é atualizado incorretamente após a execução de um trabalho do sqoop. Alguém já enfrentou esse mesmo problema? se sim, você encontrou alguma solução?
Obrigado,