Duplikate mit sqoop mit Oozie @ überwach

Ich habe ein sqoop-Pogramm erstellt, um Daten von MySQL nach HDFS mithilfe eines vorgefertigten sqoop-Jobs zu importieren:

                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 '\"'

Ich habe auch ein Spark-Programm erstellt, mit dem der Import von sqoop überwacht werden kann. Dabei habe ich die max_id (SELECT Max (ID) der zu importierenden Tabelle, den sqoop incremental.last.value, die Anzahl der Datensätze (SELECT count )), die Anzahl der unterschiedlichen Datensätze (SELECT-Anzahl (distinct ID)) und der Prozentsatz der Duplikate (definiert als SELECT-Anzahl ) - Anzahl (eindeutige ID) / Anzahl (*) * 100).

Wenn ich die Daten manuell importiere, führe ich den sqoop-Job aus:

sqoop-job --exec job_parquet_$table -- --username edastatnew --password edastatnew

Alles stimmt, ich habe keine Duplikate und die Daten werden perfekt importiert

Wenn ich jedoch Oozie zum Planen des sqoop-Jobs verwende, habe ich festgestellt, dass sqoopincremental.last.value falsch aktualisiert wird, was zu Duplikaten in meinen Daten führt. Hier ist meine Überwachung:

Wie Sie sehen, stimmt die max_ID nicht mit dem sqoop_last_value zu einem anderen Zeitpunkt des Experiments überein. Ich bin zu dem Schluss gekommen, dass bei Verwendung von Oozie der sqoop incremenatal.last.value nach der Ausführung eines sqoop-Jobs falsch aktualisiert wird. Hat jemand dasselbe Problem? Wenn ja, haben Sie eine Lösung gefunden?

Vielen Dank

Antworten auf die Frage(2)

Ihre Antwort auf die Frage