Lösung zum Importieren weiterer Daten aus MySQL in Hive

Lösung zum Importieren weiterer Daten aus MySQL in Hive

Ursprünglicher abgeleiteter Befehl:

bin/sqoop import -connect jdbc:mysql://192.168.169.128:3306/yubei -username root -password 123456 -table yl_city_mgr_evt_info --split-by rec_id -m 4 --fields-terminated-by "\t" --lines-terminated-by "\n" --hive-import --hive-overwrite -create-hive-table -delete-target-dir -hive-database default -hive-table yl_city_mgr_evt_info

Ursachenanalyse: Im MySQL-Feld können Trennzeichen wie „\n“ vorhanden sein. Beim Import in Hive wird standardmäßig „n“ als Zeilenumbruch verwendet, was zu mehr Datensätzen in Hive führt.

Lösung:

Fügen Sie beim Importieren von Daten die Option --hive-drop-import-delims hinzu, um \n, \r und \01 im Feld zu löschen.

Befehl zur endgültigen Ableitung:

bin/sqoop import -connect jdbc:mysql://192.168.169.128:3306/yubei -username root -password 123456 -table yl_city_mgr_evt_info --split-by rec_id -m 4 --hive-drop-import-delims --fields-terminated-by "\t" --lines-terminated-by "\n" --hive-import --hive-overwrite -create-hive-table -delete-target-dir -hive-database default -hive-table yl_city_mgr_evt_info

Siehe die offizielle Dokumentation: https://sqoop.apache.org/docs/1.4.7/SqoopUserGuide.html

Ergänzung: Fallstricke beim Importieren von MySQL-Daten von Sqoop nach Hive

1.sqoop-Import in HDFS

1.1 Durch Ausführen des Sqoop-Jobs wird der letzte Wert automatisch aktualisiert

# inkrementelles Sqoop-Importskript bin/sqoop job --create sqoop_hdfs_test02 --import \
--connect jdbc:mysql://localhost:3306/pactera_test \
--Benutzername root \
--password 123456 \
--Tabelle Student \
--target-dir /Benutzer/sqoop/test002/ \
--Felder-terminated-by "\t" \
--check-column zuletzt geändert \
--incremental zuletzt geändert \
--last-value "2018-12-12 00:03:00" \
--anhängen

Hinweis: Der Parameter --append ist erforderlich, da sonst beim zweiten Ausführen des Jobs ein Fehler wie folgt gemeldet wird:

An diesem Punkt wurde der Sqoop-Job erstellt!

2.Hive erstellt eine Tabelle und liest die von sqoop importierten Daten

externe Tabelle erstellen, falls nicht vorhanden: student_hive (SId int, Sname string, Sage string, Ssex string, last_modified Timestamp) 
Durch Zeilenformat getrennte Felder, abgeschlossen durch „\t“, Standort „hdfs://node01:8020/user/sqoop/test002/“;

Hinweis: Das Zeitformat im Hive ist Zeitstempel. Wenn es auf Datum eingestellt ist, können DB-Daten nicht normal geladen werden.

Der erste vollständige Ladevorgang ist abgeschlossen, die gesamte Route ist vollständig in Ordnung und die Hive-Tabelle kann Daten abfragen.

-----------------------Wichtige Trennlinie-----------------------

* Inkrementelles Laden im Sqoop-Lastmodified-Format speichert den letzten Wert als Systemzeit der Jobausführung. Wenn die Prüfspalte der Testdatenbank kleiner ist als die aktuelle Systemzeit (also der letzte Wert des vorherigen Jobs), werden die Daten nicht geladen.

Wenn SId=6, wird es nicht geladen. Ändern Sie es daher zum Testen der Daten in die heutige Zeit (26.12.2018, 17:05), dann werden die Daten erfolgreich geladen! Joho! !

Zusammenfassen:

Wenn Sie das Format „lastmodified“ für den inkrementellen Sqoop-Import verwenden,

1. Beachten Sie die Verwendung von --append;

2. Der letzte Wert ist die Systemzeit, zu der der Job ausgeführt wird. Stellen Sie beim Testen der Daten sicher, dass die Daten genau und selbsterhöhend sind.

3. Alles hat eine feste Nummer. Überprüfen Sie die Informationen und lokalisieren Sie die Probleme Ihres Systems genau

Das Obige ist meine persönliche Erfahrung. Ich hoffe, es kann Ihnen als Referenz dienen. Ich hoffe auch, dass Sie 123WORDPRESS.COM unterstützen werden. Sollten dennoch Fehler oder unvollständige Überlegungen vorliegen, freue ich mich über eine Korrektur.

Das könnte Sie auch interessieren:
  • So importieren Sie schnell Daten in MySQL
  • MySQL 4-Methoden zum Importieren von Daten
  • So verwenden Sie Navicat zum Exportieren und Importieren einer MySQL-Datenbank
  • Java verwendet MYSQL LOAD DATA LOCAL INFILE, um große Datenmengen in MySQL zu importieren
  • Detaillierte Erläuterung des MySQL-Befehlszeilenexports und -imports einer Datenbankinstanz
  • Schritte zum Importieren einer MySQL-Datenbank unter Wampserver
  • MySQL-Befehlszeilen-Export und -Import von Datenbanken
  • Verwenden Sie mysqldump, um Daten zu importieren und ein inkrementelles Backup von mysqldump durchzuführen (Verwendung von mysqldump)
  • Mehrere verschiedene Möglichkeiten zum Importieren von Daten in MySQL
  • Ändern Sie php.ini, um das maximale Limit der Änderungsmethode für MySQL-Importdatenbankdateien zu implementieren
  • Schritte zum Importieren von Millionen von Daten in MySQL mit .Net Core

<<:  Über den Unterschied zwischen js typeof und instanceof bei der Beurteilung von Datentypen und deren Entwicklung und Verwendung

>>:  HTML-Tutorial, HTML-Standardstil

Artikel empfehlen

Natives JS zur Implementierung der Dropdown-Box-Auswahlkomponente

In diesem Artikelbeispiel wird der spezifische JS...

Zusammenfassung der MySQL-Ansichtsprinzipien und Anwendungsbeispiele

Dieser Artikel fasst die Prinzipien und die Verwe...

Installieren Sie MySQL 5.7 unter Ubuntu 18.04

Dieser Artikel wurde unter Bezugnahme auf die off...

So verwenden Sie vue.js zum Implementieren der Drag & Drop-Funktion

Vorwort Durch das Hinzufügen einer Drag & Dro...

DHTML-Objekte (gemeinsame Eigenschaften verschiedener HTML-Objekte)

!DOCTYPE Gibt die Document Type Definition (DTD) ...

Warum wird UTF-8 in MySQL nicht empfohlen?

Ich bin kürzlich auf einen Fehler gestoßen, als i...

Eine sehr detaillierte Erklärung des Linux DHCP-Dienstes

Inhaltsverzeichnis 1. DHCP-Dienst (Dynamic Host C...

Ich zeige Ihnen, wie Sie Schriftsymbole in CSS verwenden

Zunächst einmal: Was ist ein Schriftsymbol? Oberf...