Ich habe einen RMI-Cluster. Jeder RMI-Server verfügt über einen Spark-Kontext. Gibt es eine Möglichkeit, eine RDD zwischen verschiedenen Spark-Kontexten zu teilen?Wie kann Spark RDD zwischen zwei Spark-Kontexten geteilt werden?
Antwort
Nein, eine RDD ist an eine einzige SparkContext
gebunden. Die allgemeine Idee ist, dass Sie ein Spark-Cluster und ein Treiberprogramm haben, das dem Cluster mitteilt, was zu tun ist. Dieser Treiber würde die SparkContext
und Kick-off-Operationen auf den RDDs haben.
Wenn Sie eine RDD einfach von einem Treiberprogramm in ein anderes verschieben möchten, besteht die Lösung darin, sie auf den Datenträger (S3/HDFS/...) im ersten Treiber zu schreiben und sie vom Datenträger in den anderen Treiber zu laden.
Wie bereits von Daniel Darabos gesagt, ist es nicht möglich. Jedes verteilte Objekt in Spark ist an einen bestimmten Kontext gebunden, der zum Erstellen verwendet wurde (SparkContext
im Fall von RDD, SQLContext
im Falle des DataFrame
Datensatzes). Wenn Sie Objekte zwischen Anwendungen teilen möchten, müssen Sie gemeinsame Kontexte verwenden (siehe zum Beispiel spark-jobserver
, Livy oder Apache Zeppelin). Seit RDD
oder DataFrame
ist nur ein kleines lokales Objekt gibt es wirklich nicht viel zu teilen.
Das Teilen von Daten ist ein völlig anderes Problem. Sie können spezialisiert in Speicher-Cache (Apache Ignite) oder in Speicher-Dateisystem (wie Alluxio - ehemalige Tachyon) verteilt werden, um die Latenz beim Umschalten zwischen Anwendung zu minimieren, aber Sie können es nicht wirklich vermeiden.
Sie können nativ RDD nach meinem Verständnis nicht Daten, sondern eine Möglichkeit, Daten über Transformationen/Filter aus Originaldaten zu erstellen.
Eine andere Idee ist, die endgültigen Daten stattdessen zu teilen. So speichert man die RDD in einem Datenspeicher, wie zum Beispiel: - HDFS (Parkett Datei etc ..) - Elasticsearch - Apache Ignite (in-memory)
ich glaube, Sie Apache Ignite lieben : https://ignite.apache.org/features/igniterdd.html
Apache Entzünden stellt eine Implementierung der Funken RDD Abstraktion, die leicht zu teilen Zustand im Speicher über mehrere Funken ermöglichen Jobs, entweder innerhalb der gleichen Anwendung oder zwischen unterschiedlichen Funken Anwendungen.
IgniteRDD implementiert ist, ist als eine Ansicht über einen Cache verteilt Entzünden, , die entweder innerhalb des Funken Job ausführenden Prozesses eingesetzt werden kann, oder auf einer Funkenarbeiter oder in seinem eigenen Cluster.
(Ich lasse Sie ihre Dokumentation graben zu finden, was Sie suchen.)
- 1. Wie können Werte zwischen zwei View Controller-Instanzen geteilt werden?
- 2. Joining zwei RDD [Zeichenfolge] -Spark Scala
- 3. Apache Spark RDD-Filter in zwei RDDs
- 4. Wie ermittelt man, welche Spalten zwischen zwei Tabellen geteilt werden?
- 5. egl - Kann Kontext zwischen Threads geteilt werden
- 6. Spark RDD Probleme
- 7. Spark-JSON Textfeld RDD
- 8. Modell, das zwischen zwei Objekten geteilt wird
- 9. Schemadefinition für Spark RDD
- 10. Apache Spark RDD-Workflow
- 11. Spark RDD werfen NullPointerException
- 12. Spark: Cache RDD in einem anderen Job verwendet werden
- 13. Wie weit wird Spark RDD Cache gehen?
- 14. Welche Ressourcen werden zwischen Threads geteilt?
- 15. Was ist der Unterschied zwischen Spark DataSet und RDD
- 16. Spark RDD Lineage und Speicherung
- 17. Concatenate Saiten aus zwei verschiedenen RDD in Python Spark-
- 18. Spark RDD Lineage Graph Darstellung
- 19. , wie man zwei Funken RDD laufen parallel
- 20. RDD-Partitionierung in Spark Streaming
- 21. RDD verwandeln sich in Spark-
- 22. Etwas falsch mit Spark RDD
- 23. Behandle Spark RDD wie einfach Seq
- 24. Iterieren durch eine Spark-RDD
- 25. Reduzieren Spark RDD, um mehrere Werte zurückzugeben
- 26. Ausnahme im Thread "Haupt" java.lang.NoClassDefFoundError: org/apache/spark/rdd/RDD
- 27. In Apache Spark wie kann ich alle Zeilen einer RDD durch zwei gemeinsame Werte gruppieren?
- 28. Spark: Objekt-RDD aus Liste erstellen <Object> RDD
- 29. Kann Spark mehrere Durchläufe über eine RDD optimieren?
- 30. Wie können Sitzungsvariablen in zwei verschiedenen Webanwendungen geteilt werden?