mag ich "Import-all-tables" zu Sqoop von MySQL zu einer Hive Benutzerdefinierte Datenbank (nicht Hive Standard-Datenbank)Wie können wir alle Tabellen in RDBMS in eine benutzerdefinierte Hive-Datenbank importieren?
Schritte versucht:
- eine benutzerdefinierte Datenbank in hive erstellen unter „/ user /hive/warehouse/Custom.db "
- Alle Berechtigungen für dieses Verzeichnis zugewiesen, so dass es keine Probleme beim Schreiben in dieses Verzeichnis durch sqoop geben wird.
unter Befehl mit der Option "--hive-Datenbank" Option auf CDH5.7 VM:
sqoop import-all-tables --connect "jdbc:mysql://quickstart.cloudera:3306/retail_db" --username retail_dba --password cloudera --hive-database "/user/hive/warehouse/sqoop_import_retail.db"
in hive default
Datenbank nur erstellt Tabellen, nicht in der benutzerdefinierten DB in diesem Fall: „sqoop_import_retail.db
“
Else seinen Versuch Tabellen in den vorherigen HDFS Verzeichnisse erstellt (/user/cloudera/categories
) und Fehler aus Angabe Tabelle bereits vorhanden ist:
16/08/30 00:07:14 WARN security.UserGroupInformation: PriviledgedActionException as:cloudera (auth:SIMPLE) cause:org.apache.hadoop.mapred.FileAlreadyExistsException: Output directory hdfs://quickstart.cloudera:8020/user/cloudera/categories already exists
16/08/30 00:07:14 ERROR tool.ImportAllTablesTool: Encountered IOException running import job: org.apache.hadoop.mapred.FileAlreadyExistsException: Output directory hdfs://quickstart.cloudera:8020/user/cloudera/categories already exists
[[email protected] etc]$
Wie wird dieses Problem behoben?
1. Erstellen von Tabellen im benutzerdefinierten Struktur-DB
2. Vorherige Verzeichnisreferenzen mit Sqoop löschen.
Vielen Dank für den Zeiger. So funktioniert es: –
Ich habe immer noch den Fehler mit der Option --hive-import. Ich hatte eine Diskussion mit anderen Mitglied Durga und verstehen, wie sqoop Daten importiert. Es kopiert zunächst Daten in einen Staging-Bereich (in diesem Fall/user/cloudera) und verschiebt es anschließend in das Zielverzeichnis (hive-warehouse/hive-database). In den Fehlerfällen existieren die Tabellen aus irgendeinem Grund auf dem/user/cloudera und sie fungieren als Waisen für den nächsten Lauf - und machen dies zu einem vorzeitigen Versagen. Entfernen der Dateien aus dem Ort/Benutzer/cloudera und ausgeführt wurde .. –
Refer @ Last comand 16/08/30 03:47:47 DEBUG hive.TableDefWriter: Create-Anweisung: CREATE TABLE IF EXISTS '/ Benutzer/Hive/warehouse/sqoop_import_retail.db'.categories' ('category_id' INT,' category_department_id' INT, 'category_name' STRING) KOMMENTAR 'Importiert von sqoop am 2016/08/30 03:47:47' ROW FORMAT DELIMITED FIELDS TERMINATED BY '\ 001' LINES TERMINIERT VON '\ 012' GESPEICHERT ALS TEXTFILE 16/08/30 03:47:47 DEBUG hive.TableDefWriter: Ladeanweisung: LOAD DATA INPATH 'hdfs: //quickstart.clouda: 8020/user/cloudera/Kategorien 'INTO TABLE '/ user/hive/warehouse/sqoop_import_retail.db''categories' –