Ich bin sehr neu in Spark und kenne mich nicht wirklich mit den Grundlagen aus, ich bin einfach hinein gesprungen, um ein Problem zu lösen. Die Lösung für das Problem besteht darin, ein Diagramm (mit GraphX) zu erstellen, in dem Kanten ein Zeichenfolgenattribut haben. Ein Benutzer möchte dieses Diagramm möglicherweise abfragen, und ich behandle die Abfragen, indem nur diejenigen Kanten herausgefiltert werden, die das Zeichenfolgenattribut haben, das der Suchanfrage des Benutzers entspricht.Wie funktioniert die Filterfunktion von Spark auf GraphX-Kanten?
Jetzt hat mein Diagramm mehr als 16 Millionen Kanten; Es dauert mehr als 10 Minuten, um das Diagramm zu erstellen, wenn ich alle 8 Kerne meines Computers verwende. Wenn ich jedoch diese Grafik abfrage (wie ich oben erwähnt habe), bekomme ich die Ergebnisse sofort (zu meiner angenehmen Überraschung).
Also, meine Frage ist, wie genau sucht der Filterbetrieb nach meinen abgefragten Kanten? Sieht es sie iterativ an? Werden die Kanten auf mehreren Kernen gesucht und es scheint nur sehr schnell? Oder ist irgendeine Art von Hashing beteiligt?
Hier ist ein Beispiel, wie ich Filter verwende: Mygraph.edges.filter (_. Attr (0) .equals ("cat")), was bedeutet, dass ich Kanten mit dem Attribut "cat." " in ihnen. Wie werden die Kanten gesucht?
Ich dachte nicht, dass ich etwas zeigen müsste, was ich getan habe. Ich möchte nur wissen, wie die Kanten gesucht werden, wenn ich einen Filter verwende. Ich meine, wenn ich Mygraph.edges.filter (_. Attr (0) .equals ("cat")) anrufe, wie werden die Kanten, die das Attribut "cat" haben, gesucht? – CMWasiq
Ja, sagt Spark faule Bewertung sagt nichts darüber, wie Werte partitioniert und verteilt werden, wenn der Filter tatsächlich angewendet wird. –
Gut genug, ich konzentrierte mich auf den anfänglichen Auslöser der Frage: dass er sofortige Rückkehr sah, die jetzt mit dem hinzugefügten Anruf zeigt, dass es überhaupt keine Filterung gab. Probieren Sie 'Mygraph.edges.filter (_. Attr (0) .equals (" cat ")). Count()' um zu sehen, wie lange die Filterung tatsächlich dauert. Ich habe jetzt einen schnellen Schnitt mit der grundlegenden Antwort für diesen Fall gemacht, ich kann etwas später in die Tiefe gehen. – sgvd