2017-03-14 6 views
1

I unten Sqoop Befehl bin Ausführung :: =was ist die relevence von -m 1

sqoop import --connect 'jdbc:sqlserver://10.xxx.xxx.xx:1435;database=RRAM_Temp' --username DRRM_DATALOADER --password ****** --table T_VND --hive-import --hive-table amitesh_db.amit_hive_test --as-textfile --target-dir amitesh_test_hive -m 1 

Ich habe zwei Anfragen :: -

1) Was ist die relevence von -m 1? Soweit ich weiß, ist es die Anzahl der Mapper, die ich dem sqoop-Job zuweise. Wenn das wahr ist, dann habe ich in dem Moment zuweisen -m 2, beginnen die Ausführungsfehler zu werfen, wie unten:

ERROR tool.ImportTool: Error during import: No primary key could be found for table xxx. Please specify one with --split-by or perform a sequential import with '-m 1' 

Nun bin ich gezwungen, mein Konzept zu ändern, jetzt sehe ich, es hat etwas damit zu tun, Primärschlüssel der Datenbank. Kann mir jemand eine Logik dahinter helfen?

2) Ich habe den obigen sqoop Befehl bestellt, um die Datei als Textdateiformat zu speichern. Aber wenn ich zu dem durch die Ausführung vorgeschlagenen Ort gehe, finde ich tbl_name.jar. Warum, wenn --as-textfile ein falscher Sytax ist, was ist dann der richtige? Oder gibt es einen anderen Ort, an dem ich die Datei finden kann?

Antwort

0

1) Um -m oder --num-mappers haben auf einen Wert größer als 1 eingestellt werden, muss entweder die Tabelle PRIMARY KEY haben oder der sqoop Befehl muss mit einer --split-by Spalte vorgesehen werden. Controlling Parallelism würde die Logik dahinter erklären.

2) Der Fileformat der in den Bienenstock Tabelle importierten Daten amit_hive_test würde Klartext (--as-textfile) sein. Da dies --hive-import ist, werden die Daten zuerst in die --target-dir importiert und dann in die Hive-Tabelle geladen (LOAD DATA INPATH). Die resultierenden Daten befinden sich innerhalb der Tabelle LOCATION und nicht in --target-dir.

Verwandte Themen