Vous ne pouvez pas interroger directement un RDD de cette manière. Considérez votre travail Spark comme un processeur de flux. Ce que vous pouvez faire, c'est pousser le modèle mis à jour vers un "magasin", comme une base de données (avec une API personnalisée ou JDBC), un système de fichiers ou memcached. Vous pouvez même passer un appel de service Web à partir du code Spark.
Quoi que vous fassiez, veillez à ce que le temps de traitement de chaque lot de données, y compris les E/S, soit bien inférieur à l'intervalle de temps que vous spécifiez. Sinon, vous risquez des goulots d'étranglement qui pourraient éventuellement planter.
Une autre chose à surveiller est le cas où vous avez vos données de modèle dans plus d'une partition RDD réparties sur le cluster (ce qui est bien sûr la valeur par défaut). Si l'ordre de vos "enregistrements" n'a pas d'importance, alors les écrire en parallèle est très bien. Si vous avez besoin d'une commande totale spécifique écrite de manière séquentielle (et que les données ne sont vraiment pas volumineuses), appelez collect
pour les intégrer dans une structure de données en mémoire à l'intérieur de votre code de pilote (ce qui signifiera un trafic réseau dans un travail distribué), puis écrivez à partir de là.