$30 off During Our Annual Pro Sale. View Details »

[Remote] #43 Koalas - Unifions les Data Scientists et les Data Engineers

[Remote] #43 Koalas - Unifions les Data Scientists et les Data Engineers

Le projet Koalas est un moyen d'unifier les Data Scientists et les Data Engineers en implémentant les API Pandas sur Apache Spark.
Lors de ce meetup, Rémi nous présentera Koalas, après quelques rappels introductifs sur Spark et Pandas.
Bonne ou mauvaise idée ? Où en est le projet et quel avenir a-t-il ? Rémy nous donnera son avis.

Toulouse Data Science

June 22, 2020
Tweet

More Decks by Toulouse Data Science

Other Decks in Technology

Transcript

  1. @tlse_dasci

    View Slide

  2. @tlse_dasci
    Qui sommes nous ?

    View Slide

  3. @tlse_dasci
    Nos événements
    (Remote) Data Talk Data No Blabla Data Mojito
    Data Journal Club

    View Slide

  4. @tlse_dasci
    La core team TDS
    Alexia Aurélie
    Victor
    N’hésitez pas à venir échanger avec nous :-)
    Magaly
    Florient
    Samia
    Thibault

    View Slide

  5. @tlse_dasci
    Notre site web
    http://www.tlse-data-science.fr/

    View Slide

  6. @tlse_dasci
    Notre site web
    http://www.tlse-data-science.fr/

    View Slide

  7. @tlse_dasci
    Call For Paper
    http://www.tlse-data-science.fr/

    View Slide

  8. @tlse_dasci
    Contact
    http://www.tlse-data-science.fr/

    View Slide

  9. @tlse_dasci
    Sujet : Evaluation of
    Conversational Agents
    for Aerospace Domain
    Septembre 2020
    chez Harry Cow
    What’s Next ?
    Visuel non contractuel

    View Slide

  10. @tlse_dasci
    Aujourd’hui, c’est #Remote #WFH

    View Slide

  11. @tlse_dasci
    (Les voisins ont hâte de vous retrouver !)
    Notre hôte habituel

    View Slide

  12. @tlse_dasci
    Merci à nos sponsors

    View Slide

  13. @tlse_dasci
    Merci à nos sponsors

    View Slide

  14. @tlse_dasci
    Merci à nos sponsors

    View Slide

  15. @tlse_dasci
    Merci à nos partenaires

    View Slide

  16. @tlse_dasci
    Les news

    View Slide

  17. @tlse_dasci
    Made with ML
    https://madewithml.com/

    View Slide

  18. @tlse_dasci
    CVPR 2020
    CPVR Best papers
    http://cvpr2020.thecvf.com/node/817

    View Slide

  19. @tlse_dasci
    Monthly reminder to be aware of bias in ML
    You can / should you ?
    PULSE: Self-Supervised Photo Upsampling via Latent Space Exploration of Generative Models
    https://arxiv.org/abs/2003.03808
    https://github.com/adamian98/pulse
    https://twitter.com/tg_bomze/status/1274098682284163072?s=20
    Le papier L’exemple qui fait le tour du monde

    View Slide

  20. @tlse_dasci
    Rémy Olivet
    Data Architect chez Ippon Technologies
    Notre speaker de ce soir

    View Slide

  21. IPPON 2019
    Koalas - Unifions les Data Scientists
    et les Data Engineers
    Data
    Scientists
    Data
    Engineers
    IPPON 2020

    View Slide

  22. IPPON 2019
    IPPON 2018
    IPPON 2020
    ★ Qui a déjà utilisé Spark ?
    ★ Qui a déjà joué avec Pandas ?
    ★ Qui a déjà entendu parler de Koalas ?

    View Slide

  23. IPPON 2019
    IPPON 2018
    IPPON 2020
    ★ Qui a déjà utilisé Spark ?
    ★ Qui a déjà joué avec Pandas ?
    ★ Qui a déjà entendu parler de Koalas ?
    Version longue
    Originale sans sous-titres

    View Slide

  24. IPPON 2019
    Voyage dans la Data science
    ★ Apprentissage (MOOC, Etudes, …) → Pandas
    ★ Analyse de petite donnée → Pandas
    ★ Analyse de gros lots de données → Dataframe dans Spark
    IPPON 2020

    View Slide

  25. IPPON 2019
    IPPON 2018
    IPPON 2019
    Pandas

    View Slide

  26. IPPON 2019
    Pandas
    ★ Librairie python de manipulation, analyse et visualisation de la donnée créé par Wes McKinney en 2008
    ★ Basé sur NumPy, SciPy et matplotlib
    ★ Permet de manipuler des
    ○ DataFrame : structure de donnée spreadsheet-like contenant une liste ordonnée de colonnes ;
    ○ Series : array-like objet à une dimension contenant des données et des index.
    ★ Généralement plus performant que d’autres outils de manipulation (e.g. R)
    ★ Calcul en mémoire et stockage de tous les états intermédiaires
    ★ Agrégation de la donnée, gestion des timeseries, …
    ★ v1.0.5 Juin 2020
    IPPON 2020

    View Slide

  27. IPPON 2019
    Pandas pour les Data Scientists
    ML library
    ★ Totalement intégré à l'écosystème des librairies Python de Data Science
    IPPON 2020

    View Slide

  28. IPPON 2019
    IPPON 2018
    IPPON 2019
    Spark

    View Slide

  29. IPPON 2019
    Hadoop MapReduce
    IPPON 2020

    View Slide

  30. IPPON 2018
    IPPON 2019
    2009
    2013
    Juin 2013
    Mai 2014
    Juillet 2016
    Aujourd’hui
    Historique

    View Slide

  31. IPPON 2019
    Spark - Processing
    IPPON 2020

    View Slide

  32. IPPON 2019
    IPPON 2019
    Spark - API
    RDD
    (2011)
    ★ Collection d’objets JVM
    ★ API bas niveau
    ★ Base du calcul distribué
    pour Spark (map, filter, …)
    ★ Immutable
    DataFrame
    (2013)
    ★ Collection d’objet ROW
    ★ Plan logique et
    optimisation via Catalyst
    ★ Projet Tungsten pour
    l’optimisation CPU/RAM
    Dataset
    (2015)
    ★ Fortement typé
    ★ Plus lent que les DataFrame
    ★ Erreur de typage levée
    directement à la compilation
    IPPON 2020

    View Slide

  33. IPPON 2019
    Spark modules
    Modules Spark
    IPPON 2020

    View Slide

  34. IPPON 2019
    Spark - Avantages
    ★ Scale
    ★ Calcul en mémoire (Comparatif vs Hadoop MR: 30x plus rapide pour un tri de 100TB de donnée)
    ★ “Lazy” evaluation
    ★ Mature (v3.0)
    ★ Scala & Programmation fonctionnelle
    ★ Communauté
    ★ Documentation
    IPPON 2020

    View Slide

  35. IPPON 2019
    Spark - Exemple de code
    val spark = SparkSession.builder().appName("meetupKoalas").master("local[*]")
    .config("spark.sql.extensions", "io.delta.sql.DeltaSparkSessionExtension")
    .getOrCreate()
    val path = “meetups.parquet”
    val schema = new StructType().add("meetup", StringType).add("nb_of_people", StringType)
    val df = spark.read.schema(schema).parquet(path)
    df = df.na.drop("any", Seq("meetup", "nb_of_people"))
    df = df
    .where($"meetup" isNotNull)
    .where($"nb_of_people" =!= 0)
    .groupBy($"meetup")
    .agg(sum($"nb_of_people") as "total_by_meetup")
    .where($"total_by_meetup" > 100)
    .sort($"meetup" desc)
    df.show()
    IPPON 2020

    View Slide

  36. IPPON 2019
    IPPON 2018
    IPPON 2019
    Spark, moi et les Data Scientists

    View Slide

  37. IPPON 2019
    toPandas()
    ★ toPandas()
    M
    E
    M
    OOM
    IPPON 2020

    View Slide

  38. IPPON 2019
    take()
    ★ take(1000)
    IPPON 2020

    View Slide

  39. IPPON 2019
    DSL
    import pandas as pd
    df = pd.read_csv(“my_file.csv”)
    df.columns = [‘x’, ‘y’, ’z’]
    df.x2 = df.x*df.x
    df.x2.value_counts()
    val spark = org.apache.spark.sql.SparkSession.builder
    .master("local")
    .appName("Spark CSV Reader")
    .getOrCreate;
    df = spark.read.option(“inferSchema”, “true”).option(“comment”,
    True).csv(“my_file.csv”)
    df = df.toDF(‘x’, ‘y’, ‘z’)
    df = df.withColumn(‘x2’, df.x*df.x)
    df = df.groupBy(df[‘x2’]).count().orderBy(‘count’, ascending=False)
    IPPON 2020

    View Slide

  40. IPPON 2019
    IPPON 2018
    IPPON 2019
    Koalas

    View Slide

  41. IPPON 2019
    Koalas
    ★ Librairie python open source créée par Databricks (v1.0.0 !)
    https://github.com/databricks/koalas/tree/v1.0.0/databricks/koalas
    ★ Implémente les API Pandas sur Apache Spark (PySpark)
    ★ Pandas first
    ★ Maintien la compatibilité Spark et Pandas (DataFrame, from_spark, from_pandas)
    IPPON 2020

    View Slide

  42. IPPON 2019
    Suit-up !
    Koalas, the distributed Pandas
    https://community.cloud.databricks.com/?o=7318061195460066#notebook/2491661392744885/command/2491661392744886
    IPPON 2020

    View Slide

  43. IPPON 2019
    Koalas - Avantages
    ★ Performance: Profite de la puissance et des optimisations de Spark
    IPPON 2020

    View Slide

  44. IPPON 2019
    Koalas - Avantages
    ★ Performance: Profite de la puissance et des optimisations de Spark
    ★ Transition facile entre le monde de la data et du “big data”
    ★ Pas de nécessité d’apprendre un nouveau DSL (Spark)
    import pandas as pd import databricks.koalas as pd
    IPPON 2020

    View Slide

  45. IPPON 2019
    Koalas - Avantages
    ★ Performance: Profite de la puissance et des optimisations de Spark
    ★ Transition facile entre le monde de la data et du “big data”
    ★ Pas de nécessité d’apprendre un nouveau DSL
    ★ Communauté
    ○ API Dataframe/Series
    ○ API DataframeGroupBy/SeriesGroupBy
    ○ API Index/MultiIndex
    ○ les fonctions spécifiques
    ■ to_datetime
    ■ get_dummies
    ■ …
    ○ Fonctions relatives au plot

    View Slide

  46. IPPON 2019
    Koalas - Limitations
    ★ Support des librairies Python de plotting et machine learning
    ○ toPandas()
    IPPON 2020

    View Slide

  47. IPPON 2019
    Koalas - Limitations
    ★ Support des librairies Python de plotting et machine learning
    ★ Ordre
    IPPON 2020
    px.line_3d(pdf, x=’day’, y=’hour’, z=’count’) px.line_3d(kdf.sort_values([‘day’, ‘hour’]).toPandas(), x=’day’, y=’hour’, z=’count’)

    View Slide

  48. IPPON 2019
    Koalas - Limitations
    ★ Support des librairies Python de plotting et machine learning
    ★ Ordre
    ★ Expertise sur le calcul distribué
    ● Partitions
    ● Data Shuffle
    ● Data Skew
    ● UDF
    ● Orchestration
    ● JVM
    ...
    IPPON 2020

    View Slide

  49. IPPON 2019
    Koalas - Benchmark
    ★ Performance Koalas vs Spark vs Pandas
    https://databricks.com/blog/2019/08/22/guest-blog-how-virgin-hyperloop-one-reduced-processing-time-from-hours-to-minutes-with-koalas.html
    IPPON 2020

    View Slide

  50. IPPON 2019
    IPPON 2018
    IPPON 2019
    Merci pour eux !
    Des questions ?

    View Slide