Ich verwende Sqoop 1.4.6, um Daten von MySQL nach Hive zu importieren. Verwenden Sie hierzu die Option import-all-tables. Das Ergebnis ist in Ordnung, aber der Importvorgang selbst ist ziemlich langsam. Zum Beispiel enthält eine der Datenbanken 40 bis 50 Tabellen mit insgesamt weniger als 1 Million Zeilen und benötigt ungefähr 25-30 Minuten, um abgeschlossen zu werden. Bei der Untersuchung scheint es die meiste Zeit damit zu verschwenden, Hive für jede importierte Tabelle zu initialisieren. Das Testen eines einfachen mysqldump für dieselbe Datenbank wird in unter 1 Minute abgeschlossen. Die Frage ist also, wie man diese Initialisierungszeit reduzieren kann, wenn dies der Fall ist, zum Beispiel mit einer einzigen Hive-Sitzung?Optimieren des Sqoop-Datenimports von MySQL zu Hive mithilfe von Import-All-Tabellen
Der Import Befehl lautet:
sqoop import-all-tables -Dorg.apache.sqoop.splitter.allow_text_splitter=true --compress --compression-codec=snappy --num-mappers 1 --connect "jdbc:mysql://..." --username ... --password ... --null-string '\\N' --null-non-string '\\N' --hive-drop-import-delims --hive-import --hive-overwrite --hive-database ... --as-textfile --exclude-tables ... --warehouse-dir=...
Update:
Sqoop Version: 1.4.6.2.5.3.0-37
Hive Version: 1.2.1000.2.5.3.0 -37
Könnte verwandt werden mit:
https://issues.apache.org/jira/browse/HIVE-10319
Es l Ooks wie ich kann '--direct' nicht mit' --hive-drop-import-delims' verwenden, aber werde deine anderen Vorschläge versuchen und zurückkommen ... –
Ziemlich genau dasselbe Ergebnis; ungefähr 25 Minuten pro Datenbank. Ich habe es auch mit Datenbanken versucht, die sich in der Anzahl der Gesamtreihen unterscheiden, aber mit ungefähr der gleichen Anzahl von Tabellen, und die Gesamtzeiten liegen ziemlich nahe beieinander. Scheint so, als ob es eine konstante Zeit pro Tabelle gibt, die nicht relativ zur Datenmenge in ihnen ist. –
Können Sie versuchen, den Mapper-Speicher vom aktuellen Wert auf eine höhere Zahl zu erhöhen ?: 'sqoop Import-All-Tabellen -D mapreduce.map.memory.mb = 2048 -D mapreduce.map.java.opts = -Xmx1024m ' –