Sie können ein RDD auf diese Weise nicht direkt abfragen. Stellen Sie sich Ihren Spark-Job als Stream-Prozessor vor. Was Sie tun können, ist, das aktualisierte Modell in einen „Speicher“ zu verschieben, z. B. eine Datenbank (mit einer benutzerdefinierten API oder JDBC), ein Dateisystem oder Memcache. Sie könnten sogar einen Webservice-Aufruf innerhalb des Spark-Codes tätigen.
Was auch immer Sie tun, achten Sie darauf, dass die Zeit für die Verarbeitung jedes Datenstapels, einschließlich E/A, weit unter der von Ihnen angegebenen Intervallzeit liegt. Andernfalls riskieren Sie Engpässe, die schließlich abstürzen könnten.
Eine andere Sache, auf die Sie achten sollten, ist der Fall, in dem Sie Ihre Modelldaten in mehr als einer RDD-Partition haben, die über den Cluster verteilt ist (was natürlich die Standardeinstellung ist). Wenn die Reihenfolge Ihrer "Aufzeichnungen" keine Rolle spielt, ist es in Ordnung, sie parallel zu schreiben. Wenn Sie eine bestimmte Gesamtreihenfolge sequentiell ausschreiben möchten (und die Daten wirklich nicht groß sind), rufen Sie collect
auf um sie in eine In-Memory-Datenstruktur innerhalb Ihres Treibercodes zu bringen (was Netzwerkverkehr in einem verteilten Job bedeutet), dann schreiben Sie von dort aus.