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

[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 La core team TDS Alexia Aurélie Victor N’hésitez pas

    à venir échanger avec nous :-) Magaly Florient Samia Thibault
  2. @tlse_dasci Sujet : Evaluation of Conversational Agents for Aerospace Domain

    Septembre 2020 chez Harry Cow What’s Next ? Visuel non contractuel
  3. @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
  4. IPPON 2019 Koalas - Unifions les Data Scientists et les

    Data Engineers Data Scientists Data Engineers IPPON 2020
  5. 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 ?
  6. 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
  7. 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
  8. 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
  9. IPPON 2019 Pandas pour les Data Scientists ML library ★

    Totalement intégré à l'écosystème des librairies Python de Data Science IPPON 2020
  10. IPPON 2018 IPPON 2019 2009 2013 Juin 2013 Mai 2014

    Juillet 2016 Aujourd’hui Historique
  11. 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
  12. 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
  13. 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
  14. 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
  15. 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
  16. IPPON 2019 Koalas - Avantages ★ Performance: Profite de la

    puissance et des optimisations de Spark IPPON 2020
  17. 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
  18. 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
  19. IPPON 2019 Koalas - Limitations ★ Support des librairies Python

    de plotting et machine learning ◦ toPandas() IPPON 2020
  20. 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’)
  21. 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
  22. 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