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?
Sie müssen AND $CONDITIONS
--query "select * from reason where id>20 AND $CONDITIONS"
Siehe Sqoop-Dokumentation .
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%Tags und Links sqoop