Um ein paar ML-Algorithmen auszuführen, muss ich zusätzliche Datenspalten erstellen. Jede dieser Spalten enthält einige ziemlich intensive Berechnungen, bei denen es darum geht, gleitende Durchschnitte zu behalten und Informationen aufzuzeichnen, während Sie durch jede Zeile gehen (und sie währenddessen aktualisieren). Ich habe ein simples Python-Skript durchgespielt und es funktioniert, und ich suche derzeit, es in ein Scala Spark-Skript zu übersetzen, das auf einem größeren Datensatz ausgeführt werden könnte.Ist es ineffizient, Spark SQL-Datenrahmen manuell zu iterieren und Spaltenwerte zu erstellen?
Das Problem ist, dass es scheint, dass für diese hoch effizient, mit Spark SQL, ist es bevorzugt, die eingebaute Syntax und Operationen (die SQL-like sind) zu verwenden. Die Codierung der Logik in einem SQL-Ausdruck scheint ein sehr gedankenintensiver Prozess zu sein. Daher frage ich mich, was die Schattenseiten sind, wenn ich die neuen Spaltenwerte manuell durch Wiederholung jeder Zeile, Verfolgung der Variablen und Einfügen der Spalte erstelle Wert am Ende.
Diese Frage ist zu breit zu beantworten. Bitte überprüfen Sie Ihre Frage mit genauen Angaben zu dem, was Sie versucht haben, und auch eine [MVCE] (http://stackoverflow.com/help/mcve) – eliasah
"Jede dieser Spalten beinhaltet einige ziemlich intensive Berechnungen, die das Halten von gleitenden Durchschnitten und das Aufzeichnen von Informationen als beinhaltet Sie gehen durch jede Zeile (und aktualisieren sie in der Zwischenzeit) "- Ihre Berechnungen erfordern einen statusübergreifenden Vorgang. Wie funktioniert das in einer verteilten Umgebung, in der sich Ihre Daten in mehreren Partitionen befinden? Wenn Sie keinen globalen Status benötigen, wie lautet die Definition des "Fensters" für die Verwaltung des Status (im Sinne von SQL-Fensterfunktionen)? – Sim