Non puoi interrogare un RDD direttamente in questo modo. Pensa al tuo lavoro Spark come a un processore di flusso. Quello che puoi fare è eseguire il push del modello aggiornato in alcuni "store", come un database (con un'API o JDBC personalizzata), un file system o memcached. Puoi persino effettuare una chiamata al servizio Web dall'interno del codice Spark.
Qualunque cosa tu faccia, fai attenzione che il tempo per elaborare ogni batch di dati, incluso l'I/O, sia ben al di sotto dell'intervallo di tempo specificato. In caso contrario, rischi colli di bottiglia che potrebbero eventualmente andare in crash.
Un'altra cosa da tenere d'occhio è il caso in cui hai i dati del tuo modello in più di una partizione RDD distribuita sul cluster (che è ovviamente l'impostazione predefinita). Se l'ordine dei tuoi "record" non ha importanza, allora scriverli in parallelo va bene. Se hai bisogno di un ordine totale specifico scritto in sequenza (e i dati non sono davvero grandi), chiama collect
per portarli in una struttura di dati in memoria all'interno del codice del tuo driver (che significherà traffico di rete in un lavoro distribuito), quindi scrivi da lì.