Importieren von Daten in HBase mit Sqoop

Sqoop kann eine relationale Datenbank-Schema in ein HBase Schema zu transformieren verwendet werden. Natürlich hier das Hauptziel ist es zu zeigen, wie Sqoop direkt in HBase Daten aus einem RDBMS oder Data-Warehouse importieren kann, aber es ist immer besser, um zu sehen, wie ein Werkzeug in Kontext verwendet wird im Vergleich zu, wie es in der Zusammenfassung verwendet wird.

Die Abbildung zeigt, wie die Service-Order-Datenbank, nachdem sie in einem HBase Schema umgewandelt aussehen könnte werden.

bild0.jpg

Für diese spezielle Import Beispiel möchten Sie die zu importieren customercontactinfo Tabelle in Vorbereitung einer HBase Tabelle direkt in den HBase Service Order Datenbankschema für den Aufbau. Um das HBase Schema abzuschließen, würden Sie die gleichen Schritte ausführen müssen, um zu importieren, die Produktinformation Tabelle und dann das serviceorders Tabelle könnte mit einem Java-MapReduce-Anwendung erstellt werden.

Sqoop jetzt nicht erlauben Sie, alles auf einmal zu importieren, eine relationale Tabelle direkt in eine HBase Tabelle mehrere Spalte Familien mit. Um diese Einschränkung zu umgehen, erstellen Sie die HBase Tabelle und dann ausführen drei Sqoop Importoperationen die Aufgabe zu beenden. Die Auflistung zeigt die Aufgabe, die Tabelle zu erstellen.

hbase (main): 017: 0> create 'customercontactinfo', 'Kundenname ", hbase (main): 018: 0 *' Contact ',' ProductNums'0 Zeile (n) in 1,0680 Sekunden

In der folgenden Auflistung, für jeden Befehl Sqoop Import, beachten Sie, dass die Ziel HBase Spalte Familie durch die Angabe --Spalte-Familie CLA und die entsprechenden MySQL Spalten, die durch die angegebene -Spalten CLA sind fett gedruckt. Das customernum Primärschlüssel wird auch die HBase Zeilenschlüssel, wie der angegebene --hbase-Reihe schlüssel CLA.

$ Sqoop import - verbinden jdbc: mysql: // localhost / serviceorderdb - Benutzername root -P - Tabelle customercontactinfo  --Spalten "customernum, Kundenname" --hbase-Tabelle customercontactinfo  --Spalte-Familie Kundenname --hbase-Reihe schlüssel customernum -m 1Geben Passwort: ... 13/08/17 16.53.01 INFO mapreduce.ImportJobBase. Abgerufen 5 Aufzeichnungen $ Sqoop import - verbinden jdbc: mysql: // localhost / serviceorderdb --username Wurzel -P - Tabelle customercontactinfo  --Spalten "customernum, Kontaktinfo" --hbase-Tabelle customercontactinfo  --Spalte-Familie Contact --hbase-Reihe schlüssel customernum -m 1Geben Passwort: ... 13/08/17 17.00.59 INFO mapreduce.ImportJobBase. Abgerufen 5 Aufzeichnungen $ Sqoop import - verbinden jdbc: mysql: // localhost / serviceorderdb --username Wurzel -P - Tabelle customercontactinfo -Spalten "customernum, productnums"  - Hbase-Tabelle customercontactinfo -Spalte-Familie ProductNums  - Hbase-Reihe schlüssel customernum -m 1Geben Passwort: ... 13/08/17 17.05.54 INFO mapreduce.ImportJobBase: 5 Datensätze abgerufen werden.

Wenn Sie eine HBase Scan Ihres neuen Tabelle durchzuführen waren, würden Sie sehen, dass der Import und die Übersetzung aus einer relationalen Datenbank-Tabelle auf MySQL direkt in HBase ein Erfolg war.

Das customercontactinfo in diesem Beispiel Tabelle ist eher klein, aber stellen Sie sich die Leistung, die Sie jetzt haben, mit Sqoop und HBase, um schnell relationalen Tabellen verschieben, die Kapazität auf dem RDBMS oder Data-Warehouse in HBase möglicherweise überschritten wird, in denen die Kapazität praktisch unbegrenzt ist und Skalierbarkeit ist automatisch.

hbase (main): 033: 0> scan 'customercontactinfo'ROWCOLUMN + CELL10000column = Contact: Kontaktinfo, Timestamp = 1376773256317, Wert = 1 Hadoop Lane, NY, 11111, [email protected]=CustomerName: Kundenname, Zeitstempel = 1376772776684 , value = John Timothy Smith10000column = productNums: productnums, timestamp = 1376773551221, value = B50010001column = Contact: Kontaktinfo, Timestamp = 1376773256317, Wert = 2 HBase Ave, CA, 2222210001column = Kundenname: Kundenname, Zeitstempel = 1376772776684, value = Bill Jones10001column = ProductNums: productnums, timestamp = 1376773551221, value = A100, A200, A300, B400, B500, C500, C600, D70020000column = Contact: Kontaktinfo, Timestamp = 1376773256317, Wert = 1 Expert HBase Ave, CA, 2222220000column = Kundenname: Kundenname, Zeitstempel = 1376772776684, value = Jane Ann Doe20000column = productNums: productnums, timestamp = 1376773551221, value = A100, A200, A30020001column = Contact: Kontaktinfo, Timestamp = 1376773256317, Wert = 1 piglatin Ave, CO, 3333320001column = Kundenname: Kundenname, Zeitstempel = 1376772776684 , Wert = Joe Developer20001column = ProductNums: productnums, timestamp = 1376773551221, value = D70030000column = Contact: Kontaktinfo, Timestamp = 1376773256317, Wert = 1 Statistiken Lane, MA, 3333330000column = Kundenname: Kundenname, Zeitstempel = 1376772776684, Wert = Daten Scientist30000column = ProductNums : productnums, timestamp = 1376773551221, value = C5005 Zeile (n) in 0,1120 Sekunden

Import von vorhandenen relationalen Daten über Sqoop in Hive und HBase Tabellen können potenziell eine breite Palette von neuen und spannenden Datenanalyse Workflows ermöglichen. Wenn diese Funktion für Sie von Interesse ist, überprüfen Sie die Apache Sqoop Dokumentation für zusätzliche Hive und HBase Kommandozeilenargumente und Features aus.

Menü