Sqoop-Import mit SQL-Abfrage mit Where-Klausel

8

sqoop import --connect jdbc:teradata://192.168.xx.xx/DBS_PORT=1025,DATABASE=ds_tbl_db --driver com.teradata.jdbc.TeraDriver --username dbc --password dbc --query 'select * from reason where id>20' --hive-import --hive-table reason_hive --target-dir <hdfs-location> -m 1

Ich habe den Fehler:

  

Abfrage [Select * aus Grund, wo id & gt; 20] $ CONDITIONS in der WHERE-Klausel enthalten muss.

Ich weiß, dass es in der Abfrage für Sqoop eine Where-Klausel geben muss.

Also für Anfragen wie

select * from reason

Ich modifiziere es zu:

select * from reason WHERE $CONDITIONS

Was tun bei Abfragen mit where -Klausel?

    
dev ツ 28.02.2016, 08:36
quelle

3 Antworten

16

Sie müssen AND $CONDITIONS

hinzufügen

--query "select * from reason where id>20 AND $CONDITIONS"

Siehe Sqoop-Dokumentation .

    
vinayak_narune 29.02.2016, 05:29
quelle
3

Sqoop benötigt den Zugriff auf Metadaten der Tabelle, z. B. Informationen zum Spaltentyp. Platzhalter $ CONDITIONS ist standardmäßig auf '1 = 0' gesetzt, um sicherzustellen Dieser sqoop empfängt nur Typinformationen. Nach dem Ausführen des Befehls sqoop sehen Sie die erste Abfrage, die ausgelöst wird mit Vorgabe $ BEDINGUNGEN. Später wird es durch verschiedene Werte ersetzt, die unterschiedliche Bereiche basierend auf der Anzahl der Mapper (-m) oder --split-by-Spalte oder - Boundary-Query definieren, so dass der gesamte Datensatz in verschiedene Datenscheiben oder Chunks und Chunks aufgeteilt werden kann kann parallel mit so viel wie Nebenläufigkeit verfügbar importiert werden. Sqoop wird diesen Platzhalter automatisch durch die generierten Bedingungen ersetzen, die angeben, welche Datenscheibe von jeder einzelnen Aufgabe übertragen werden soll

Betrachten Sie zum Beispiel die Tabelle sample_data mit dem Spaltennamen, der ID und dem Gehalt. Sie möchten Datensätze mit Gehalt & gt; 1k.

%Vor%

Es folgt die erste Abfrage, die eine leere Menge zurückgibt.

%Vor%

Dann ist die nächste Abfrage, um den minimalen und maximalen Bereich zu erhalten.

%Vor%     
Nikhil Bhide 30.12.2016 09:16
quelle
0

Sie können Where-Klausel verwenden

- wo "order_status = 'CLOSED'"

Ссылка

    
RajenDharmendra 25.10.2017 16:50
quelle

Tags und Links