2016-03-18 3 views
1

Je construis une architecture lambda et ai besoin de Spark en tant que partie du lot pour redémarrer soit à intervalles réguliers soit juste après avoir terminé, ou faire appel au redémarrage par un travail Spark Streaming. J'ai regardé des choses et je ne comprends probablement pas le contexte Spark, mais je ne suis pas sûr de pouvoir mettre le contexte Spark en boucle. Quelqu'un pourrait-il fournir des conseils rapides? Une autre question rapide est que, étant donné qu'il y aura des données continuellement ajoutées dans HBase, où Spark lira les données, y a-t-il une utilité pour la mise en cache? Merci d'avance pour l'aide.Comment faire pour que Spark redémarre automatiquement le travail après avoir terminé?

Modifier: tous les calculs seront-ils refaits si j'implémente un SparkListener et que l'appel de fin de travail est collecté?

Répondre

0

Lorsque vous appelez awaitTermination() StreamingContext ne se ferme pas et continue à s'exécuter. Vous devez appeler stop() à partir d'un autre thread pour arrêter le streaming de contexte.

JavaDStream<T> jsonStrem = streamingContext.receiverStream(receiver);    
streamingContext.start(); 
streamingContext.awaitTermination(); 

receiver seront appelés comme par intervalle de traitement par lots

+0

Merci pour l'entrée. Ce qui est intéressant, c'est que j'essaie de faire en sorte que Batch fasse ça, comme dans un SparkContext, pas un streaming. Mon travail Spark Streaming prend en charge la couche de vitesse de l'architecture lambda et j'ai un travail Spark pour faire la couche batch. J'espère que cela le rendra plus clair. Peut-être que je me méprends sur l'architecture lambda en termes d'utilisation. – SpooXter