Wie wird die Optimierung von INNER JOINS (Push Down) für das Mongo Storage Plugin in Apache Drill implementiert?

9

Ich möchte das Apache Drill Mongo Speicher-Plugin erweitern, um INNER JOINs nach unten zu drücken. Daher möchte ich INNER JOIN in die Mongo-Aggregationspipeline umschreiben.

Wie müssen wir anfangen, das Neuschreiben in Apache Drill zu implementieren.

Hier ist ein SQL-Beispiel:

%Vor%

Ich habe die drücke von WHERE Klauseln im Mongo Storage Plugin. Aber ich kämpfe immer noch, das gleiche für INNER JOINS zu tun. Wie würde der Konstrukteur von public class MongoPushDownInnerJoinScan extends StoragePluginOptimizerRule aussehen? Welches Äquivalent von MongoGroupScan ( AbstractGroupScan ) müsste ich implementieren? Jede Hilfe würde sehr geschätzt werden.

    
Dennis Knochenwefel 03.01.2018, 17:22
quelle

1 Antwort

0

Dies ist eine schwierige Frage, die Sie bei StackOverflow beantworten sollten, da keine einzelne Person des Drill Dev-Teams die gesamte Antwort kennt. Bitte posten Sie diese Frage in der Drill Dev-Liste, damit das Team die Lösung mit Ihnen besprechen kann. Nachdem wir eine bessere Vorstellung von dem Problem und der Lösung bekommen haben, können wir die Ergebnisse unserer Diskussion hier veröffentlichen. Die Mailingliste von Drill ist hier Ссылка

    
ilooner 26.01.2018 00:35
quelle

Tags und Links

Django: Verwenden von Annotate, Count und Distinct in einem Queryset ___ qstntxt ___

Beim Versuch, die Base R "Bizarro-Pipe" zu verstehen, wie im Win Vector-Blog beschrieben, habe ich bestätigt, dass einfache Beispiele ein röhrenartiges Verhalten in R ohne installierte Pakete erzeugen. Zum Beispiel:

%Vor%

Ich habe festgestellt, dass der Punkt als Operator in Plyr und Masrit verwendet wird. Ich verbrachte ein paar Stunden damit, in Base R nach jedem Synonym zu suchen, das ich mir für den Punktoperator vorstellen konnte, mit jedem Hilfsmittel, das ich kannte; Ich habe sogar ein paar lächerliche Regex-Suchen gemacht. Schließlich habe ich es aus Verzweiflung versucht:

%Vor% Bis jetzt habe ich nicht widerlegt, dass ein nackter Punkt, ohne auch nur einen Namen zu haben, ein gültiger variabler Name in R ist. Aber ich hoffe immer noch, dass dies nur ein Nebeneffekt von etwas Vernünftigerem ist Verhalten, irgendwo dokumentiert.

Ist es das? Und wenn ja, wo?

Ich erkenne an, dass die Autoren es bei ihrem ersten Erscheinen im Win Vector-Blog als einen Witz identifiziert haben.

    
___ tag123operators ___ Operatoren sind Symbole, die in fast allen Programmier- und Codierungssprachen vorkommen, um Berechnungen und Vergleiche von Daten durchzuführen. Ich sehe es, aber ich glaube es nicht. Legale Namen in R, Rohrleitungen und der Punkt ___ tag123r ___ R ist eine freie, quelloffene Programmiersprache und Softwareumgebung für statistische Berechnungen, Bioinformatik, Visualisierung und allgemeine Datenverarbeitung. Stellen Sie minimale, reproduzierbare, repräsentative Beispiele für Ihre Fragen bereit. Verwenden Sie dput () für Daten und geben Sie alle Nicht-Basis-Pakete mit Bibliotheksaufrufen an. Bilder für Daten oder Code nicht einbetten, eingerückte Codeblöcke verwenden. Verwenden Sie für statistische Fragen http://stats.stackexchange.com. ___ tag123pipe ___ Eine Unix-Pipe verbindet Dateideskriptoren zweier Prozesse. Eine Pipe wird mit der Funktion POSIX pipe () erstellt, die in deklariert ist. Shells ermöglichen die Pipe-Erstellung zwischen Prozessen mithilfe von "|". ___ answer49477514 ___
___ tag123namingconventions ___ Namenskonventionen beziehen sich auf allgemeine Regeln für Namen, die Programmierkonstrukten wie Variablen und Methoden zugewiesen sind. Diese Konventionen erleichtern die Lesbarkeit und verbessern dadurch die Wartbarkeit von Code, indem sie die Benennungskonsistenz über verschiedene Module hinweg durchsetzen. ___ tag123pipeline ___ Eine Pipeline ist eine Folge von Funktionen (oder das Äquivalent davon), die so zusammengesetzt sind, dass die Ausgabe von Eins eine gute Eingabe für die nächste ist, um eine zusammengesetzte Transformation zu erzeugen. In der Shell-Syntax, die als 'command | Befehl2 | Befehl3 '. Der Begriff wird auch in der Computerarchitektur verwendet, um eine Sequenz von seriellen Stufen zu definieren, die parallel über Elemente ausgeführt werden können, die in die Leitung eingespeist werden, um den Gesamtdurchsatz zu erhöhen. ___