J'essaie d'utiliser Spring Batch dans l'un de mes projets, car il existe un autre projet basé sur Spring Batch.
Cependant, plus je lis, plus je me rends compte que Spring batch ne ressemble en rien à ApacheBeam ou MapReduce, il n'est utilisé que pour transférer les données MÊME d'un endroit à un autre avec un mappage de type comme varchar - > chaîne.
Cependant, la tâche en cours nécessite un certain traitement, non seulement le mappage et la conversion de types, mais également des agrégations et une structure de données. Spring batch peut-il être utilisé pour le traitement des données ou n'est-ce qu'un outil ETL?
3 Réponses :
Eh bien, je ne suis pas d'accord sur ce point que spring batch - n'est utilisé que pour transférer les mêmes données d'un endroit à un autre avec un mappage de type comme varchar -> string.
A travaillé en 4 ans dans cette technologie et j'ai vu ce framework se développer beaucoup.
Spring batch est bien capable de traiter les données, la cartographie, la conversion requise et les agrégations de données - spring batch peut certainement être utilisé pour le traitement des données.
étant une technologie open source - vous aurez beaucoup de matériel à lire, et les forums comme stackoverflow ont une tonne de FAQ autour.
Pour la mise à l'échelle et la mise en parallèle, il existe différentes architectures dans Spring batch, qui vous aideront à améliorer vos performances.
Vous trouverez plus de détails ici
SPRING_BATCH_SCALING_AND_PARALLELING
Si vous souhaitez surveiller vos travaux, vous pouvez utiliser - Flux de dates du nuage de printemps. La surveillance peut également être effectuée - avec AppDynamics.
Parrainez ce blog -
MONITOR_SPRING_BATCH_JOB_WITH_APP_DYNAMICS p >
Un autre avantage de l'utilisation de spring batch est que vous disposez de nombreux types de lecteurs, de processeurs et d'écrivains prédéfinis - qui prennent en charge des sources telles que fichier, base de données, flux, etc.
En plus de cela - comme il s'agit d'un framework basé sur Java, vous pouvez faire tout ce qui peut être fait avec Java.
J'espère que cela vous aidera.
Merci pour la réponse, c'est une bonne réponse et probablement ce que vous dites est vrai. Mais le fait est que Spring Batch est principalement destiné à ETL, le traitement peut être accompli mais avec un effort supplémentaire, ce n'est pas le point principal du cadre, est-ce un point valable?
je dirais que oui, c'est un point valable - pour le traitement, des efforts supplémentaires seront nécessaires - mais si vous connaissez un bon framework basé sur Java pour le traitement - alors il peut être facilement intégré avec lui
vous seriez surpris des performances du batch - il suffit de consulter cette démo sur InfoQ - infoq.com/presentations/batch-performance-spring-4-1/...
Spring Batch (SB) nous donne les trois - E, T et L.
Cependant, nous devons décider d'utiliser ou non SB. C'est encore une décision quantitative si un individu / une équipe a vraiment besoin de l'apprendre, s'il ne le sait pas. Besoin d'évaluer le retour sur investissement (ROI). Si c'est juste E ou T ou L seulement, il pourrait y avoir d'autres solutions plus simples.
Si nous ne parlons que de Java, ET de l'un de ces trois éléments, SB n'est pas nécessaire. Mais encore une fois, quand il s'agit de simplicité (si vous connaissez SB), d'évolutivité, de surveillance, de traitement parallèle géré par transaction - tout cela va de pair avec SB prêt à l'emploi.
Votre description ci-dessous est incorrecte car elle compare des pommes et des oranges,
Cependant, plus je lis, plus je me rends compte que Spring batch est rien comme ApacheBeam ou MapReduce, il n'est utilisé que pour le transfert les mêmes données d'un endroit à un autre avec un mappage de type comme varchar -> chaîne.
Contrairement à ApacheBeam ou MapReduce, Spring Batch n'est pas un moteur mais un framework de programmation. Un cadre de programmation se compose généralement de deux composants principaux - Directives de structure de code + API
La seule restriction imposée à un développeur Java est de suivre les directives de structure du programme Spring Batch et l'utilisation des API Spring Batch est facultative.Bien que la modélisation soit en lecture -> Process -> Ecrire, un développeur Java est libre logique qu'il ou elle souhaite écrire dans ces composants - seules les pensées peuvent limiter ce qu'un développeur Java pourrait écrire dans ces composants. De plus, un artefact peut être intégré à un autre artefact.
Je répète donc à nouveau que Spring Batch est un cadre de programmation et non un moteur ou un logiciel pré-configuré comme Hadoop, de sorte que la comparaison est comme la pomme avec les oranges.
Voir ceci - Conseils de printemps : Spring Batch et Apache Kafka
Comme je l'ai déjà dit, un développeur Java peut développer n'importe quel type de programme en étant uniquement limité dans la structure du programme, mais la logique en cours d'écriture n'a pas de limites!
Encore une fois - Spring Batch n'est pas un outil ETL comme Informatica ou Pentaho mais un cadre de programmation utilisant Java et Spring. Un développeur peut être aussi créatif qu'il le souhaite.
J'avais développé un travail de correspondance de données en temps réel qui nécessitait des capacités de recherche de texte libre à l'aide d'Apache Lucene en adaptant ma programmation au modèle Spring Batch.