Наблюдение дубликатов с использованием sqoop с Oozie
Я построил sqoop pogram для импорта данных из MySQL в HDFS с помощью предварительно созданного задания 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 '\"'
Я также создал искровую программу, которая позволяет контролировать импорт sqoop. В этом я измерил max_id (SELECT Max (ID) импортируемой таблицы, sqoop incremental.last.value, количество записей (количество SELECT ()), количество отдельных записей (количество SELECT (отличный идентификатор)) и процент дубликатов (определяется как количество SELECT () - количество (отличный идентификатор) / количество (*) * 100).
Когда я импортирую данные вручную, выполняя задание sqoop:
sqoop-job --exec job_parquet_$table -- --username edastatnew --password edastatnew
Все правильно, у меня нет дубликатов и данные отлично импортируются
Однако, когда я использую Oozie для планирования задания sqoop, я заметил, что sqoopincremental.last.value неправильно обновлен, что приводит к дублированию в моих данных. Вот мой мониторинг:
Как видите, max_ID не совпадает с sqoop_last_value в разное время эксперимента. Я пришел к выводу, что при использовании Oozie sqoop incremenatal.last.value ошибочно обновляется после выполнения задания sqoop. Кто-нибудь сталкивался с такой же проблемой? если да, вы нашли какое-нибудь решение?
Спасибо,