Ich bin noch neu bei Spark/PySpark und habe folgende Frage. Ich habe eine verschachtelte Liste mit ID's drin:Spark/PySpark: Gruppiere nach jedem Element der geschachtelten Liste
result = [[411, 44, 61], [42, 33], [1, 100], [44, 42]]
Die Sache bin ich zu erreichen versuchen, ist, dass, wenn ein Element der Unterliste ein Element in einem anderen Teilliste entspricht die beiden zusammengeführt werden sollen. Das Ergebnis sollte wie folgt aussehen:
merged_result = [[411, 44, 61, 42, 33, 44, 42], [1,100]]
Die erste Liste in "Ergebnis" stimmt mit der vierten Liste überein. Die vierte Liste stimmt mit der zweiten überein, daher sollten alle 3 zu einer Liste zusammengeführt werden. Die dritte Liste passt zu keiner anderen Liste, also bleibt sie gleich.
Ich könnte dies erreichen, indem Sie Schleifen mit Python schreiben.
result_after_matching = []
for i in result:
new_list = i
for s in result:
if any(x in i for x in s):
new_list = new_list + s
result_after_matching.append(set(new_list))
#merged_result = [[411, 44, 61, 42], [42,33,44], [1, 100], [44,42,33,411,61]]
Da dies nicht die gewünschte Ausgabe müsste ich die Schleife und tun einen anderen Satz() offenkundigen der „merged_result“)
set([[411,44,61,42,33], [42,33,44,411,61],[1,100], [44,42,33,411,61]])
-> [[411, 44, 61, 42, 33], [1,100]]
Da die Liste der Listen wiederholen, und die Teil-Listen bekommt größer und größer nach der Zeit, wenn neue Daten eingehen werden, wird dies nicht die zu verwendende Funktion sein.
Kann mir jemand sagen, ob es eine Funktion in Spark/Pyspark gibt, um diese verschachtelten Listen viel einfacher und schneller zusammenzuführen/zusammenzuführen/zu gruppieren?
Vielen Dank im Voraus! MG
Ihre Lösung funktioniert ziemlich schnell! Sogar mit 3k + Listen. Die einzige Sache, die nicht am realen Beispiel arbeitete, war, dass einzelne Wertlisten (z. B. [57]), die nicht als die Ausgabe enthalten sind, haben Sie irgendwelche Erklärungen ?! Einzelner Wert bedeutet, dass diese ID NICHT in einer anderen Liste enthalten ist. Also habe ich die Liste in zwei Teile geteilt, bevor ich den Code benutzt habe und sie danach wieder zusammengefügt habe. – mgruber
Außerdem habe ich versucht, GraphX zu verwenden, aber es funktioniert nicht in Python. Irgendwie kann ich nur "Python" -basierte Skripte in unserer Distribution verwenden. Ich werde mit unserem Vertriebsarchitekten sprechen. – mgruber