Upgrade to Pro — share decks privately, control downloads, hide ads and more …

[ORLEANS TECH 2019] Unifiez vos traitements Bat...

[ORLEANS TECH 2019] Unifiez vos traitements Batch & Streaming avec Apache BEAM

Alexandre Touret

September 17, 2019
Tweet

More Decks by Alexandre Touret

Other Decks in Programming

Transcript

  1. Sommaire ▪ Etat des lieux ▪ Présentation d’Apache Beam ▪

    Concepts ▪ Démonstration ▪ (Ma) Conclusion 3
  2. 8 Portabilité ? Quid de la formation ? Un outil

    et une API pour chaque besoin ? Et la production ?
  3. Apache Beam a été initié par Google dans son offre

    Dataflow. Il a été donné à la fondation Apache en 2016. https://beam.apache.org Il est apparu en 2018 dans les principaux radars tech. 11 Source: https://www.thoughtworks.com/radar
  4. 16 Les transformations Beam fournit plusieurs transformations par défaut: •

    ParDo • GroupByKey • Combine • ... On peut les étendre et créer nos transformations.
  5. 17 public class FormatStringAsDocument extends SimpleFunction<String, Document> { @Override public

    Document apply(String input) { ObjectMapper objectMapper = new ObjectMapper(); Timestamp timestamp = objectMapper.readValue(input, Timestamp.class); Map<String, Object> value = objectMapper.convertValue(timestamp, new TypeReference<Map<String, Object>>() { }); Document document = new Document(value); return document; } }
  6. 18 Les IO Beam fournit une bibliothèque de transformations permettant

    l’interaction avec des sources de données On peut trouver : Kafka Text Hadoop Cassandra ...
  7. Batch sur présence de fichiers PCollection<String> lines = pipeline.apply(TextIO.read() .from(“data/**.csv”)

    .watchForNewFiles( standardSeconds(15), afterTimeSinceNewOutput(Duration.standardHours(1)))) 22
  8. 23 Les runners Beam fournit plusieurs runners. La sélection d’un

    runner se fait par ajout d’une dépendance dans le classpath <dependency> <groupId>org.apache.beam</groupId> <artifactId>beam-runners-direct-java </artifactId> <version>2.14.0</version> <scope>test</scope> </dependency>
  9. Quelques points négatifs • Pas compatible avec JAVA 11 et

    les dernières versions de certains frameworks (ex. JUNIT5) • La gestion des erreurs est encore problématique dans certains cas 27
  10. Les points positifs • Le projet est très actif •

    Permet d'exécuter des pipelines sur plusieurs runtimes avec une seule API. 28 • Si vous devez gérer plusieurs environnements et faire du “débordement dans le cloud”, BEAM peut être utile.