2017-06-29 1 views
0

$ Bedingungen brechen die Freiform-Abfrage in verschiedenen Aufteilungen basierend auf dem Platzhalter selbst entschieden. Sagen wir, wir haben eine Abfrage, die Ergebnis für 1000 Datensätze gibt. Standardmäßig wird es durch $ CONDITIONS in 4 verschiedene Abfragen mit RandbedingungenKönnen wir CONDITIONS in Sqoop kontrollieren?

(1,250) (251,500) (501,750) und (751,1000) gebrochen.

Was können wir tun, um Abfrageaufteilungen gemäß unseren Anforderungen zu erreichen?

+0

ist es ** Offset ** und ** Limit ** in Abfrage, die Sie versuchen zu erreichen? – YXN

+0

@Yxn Ich versuche zu verstehen, wie wir die Anzahl der Mapper basierend auf Split-by und $ BEDINGUNGEN entscheiden können. Soweit ich verstanden habe, teilt split-by die Anzahl der Elemente, während $ BEDINGUNGEN die Abfrage teilen und auf die Zahl geben von Mappern entscheidet er auf der Basis von Datenelementen. Korrigiere mich und bezüglich ** Offset ** und ** Limit **, es ist etwas, das mein nächstes Anliegen ist. – NeoWelkin

Antwort

2

Sie können keine Abfragepartitionsoffsets auswählen. Sie können zwei Dinge steuern:

  • --boundary-query <statement> zum Erstellen von Splits.
  • --num-mappers zur Steuerung der Anzahl der Splits.

und offensichtlich --split-by Spalte.

Die Wahl der Grenzen für jeden Split klingt wie eine gute Idee. Aber es ist sehr kostspielig, solche Erkenntnisse aus Daten zu erhalten.

Woher kennen Sie Split-Punkte?

Durch Iterieren der gesamten Daten dieser bestimmten Spalte und Erstellen einer Logik zum Erstellen einer idealen Partition.

Sie können jedoch sqoop-Job (mit Standardpartition) schneller als diese Iteration ausführen.

Ich denke, das ist, warum die Leute nicht viel Interesse an dieser Funktion haben.

+0

Schöne Erklärung – syadav

+0

Danke @syadav :) –