Ich habe eine CLI-Anwendung für die Umwandlung von JSONs. Der meiste Code ist map
ping, flatMap
ping und traversing mit for
Listen von JValues. Jetzt möchte ich diese Anwendung zu Spark portieren, aber scheint, muss ich alle Funktionen 1: 1 neu schreiben, aber RDD[JValue]
anstelle von List[JValue]
schreiben.Behandle Spark RDD wie einfach Seq
Gibt es eine Möglichkeit (wie Typ Klasse) für die Funktion sowohl Listen und RDDs zu akzeptieren.
Die Methodensignatur von Karte auf Liste und auf RDD sind nicht die gleichen, so wird dies ein Schmerz sein. Möglicherweise können Sie mit einem Typklassenansatz arbeiten und einen eigenen Wrapper für ihre Map definieren, der eine Instanz für beide bereitstellt. Wenn Sie scalaz monad und traverse-Instanzen für RDD definieren könnten, könnten Sie dies möglicherweise verwenden. – Daenyth
Ich denke, es sollte keine Probleme mit Funktor geben. Aber auf den ersten Blick hält RDD keine Monad-Gesetze. – chuwy
Wenn RDD nicht den Monad-Gesetzen gehorcht, können Sie FlatMap nicht mit der Scalaz-Typklasse verwenden. Das heißt, dass Sie in der Lage sein könnten, eine Version zu implementieren, die nicht den Gesetzen entspricht, und * möglicherweise * für Ihre speziellen Anforderungen funktioniert. Ähnlich wie bei der Bereitstellung von ValidationFlatMap – Daenyth