Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Introduction spark

658 views

Published on

Introduction to Apache Spark

Published in: Data & Analytics
  • Be the first to comment

  • Be the first to like this

Introduction spark

  1. 1. Introduction à! Nantes - 08/07/2014! Ludwine Probst - @nivdul
  2. 2. développeuse! maths lover! machine learning & big data Leadeuse de Duchess France @nivdulnivdul.wordpress.com
  3. 3. Etat des lieux
  4. 4. Mais…
  5. 5. • analytics pour de gros datasets et données en mémoire! • Resilient Distributed Datasets (RDD)! • principe de lineage! • compatible avec Hadoop / InputFormats! • meilleures performances que Hadoop! • plus de flexibilité d’implémentation
  6. 6. Interrogation de Spark shell scala/python! supporte les lambdas expressions (Java8) compatible avec NumPy
  7. 7. Vue globale todo schéma
  8. 8. SparkContext SparkConf sparkConf = new SparkConf() .setAppName("SimpleExample") .setMaster("local"); ! //.setMaster(« spark://192.168.1.11:7077") ! ! JavaSparkContext sc = new JavaSparkContext(sparkConf);
  9. 9. Resilient Distributed Datasets (RDD) • créé au démarrage! • traitement en parallèle possible / partitionnement sur les différents noeuds du cluster! • opérations sur les RDDs = transformations + actions! • contrôle sur la persistance : MEMORY, DISK…! • resistance à la panne (principe de lineage avec le DAG) Définition : collections distribuées fault-tolerant et ! immutable
  10. 10. Créer un RDD // sc est le SparkContext ! // à partir d’un fichier texte JavaRDD<String[]> lines = sc.textFile("ensemble-des-equipements- sportifs-de-lile-de-france.csv"); ! // à partir d’un fichier venant d’Hadoop sc.hadoopFile(path, inputFormatClass, keyClass, valueClass); !
  11. 11. Opérations sur les RDDs JavaRDD<String[]> lines = sc.textFile("ensemble-des-equipements- sportifs-de-lile-de-france.csv") .map(line -> line.split(";")) // suppression de la 1ère ligne .filter(line -> !line[1].equals("ins_com")); ! lines.count(); ! // nombre par type d'équipement rangé par ordre alphabétique lines.mapToPair(line -> new Tuple2<>(line[3], 1)) .reduceByKey((x, y) -> x + y) .sortByKey() .foreach(t -> System.out.println(t._1 + " -> " + t._2)); !
  12. 12. Persistance des RDDs // lines est un RDD ! // persistance par défaut MEMORY_ONLY lines.cache(); ! // spécifié lines.persist(StorageLevel.DISK_ONLY()); lines.persist(StorageLevel.MEMORY_ONLY()); lines.persist(StorageLevel.MEMORY_AND_DISK()); ! // avec réplication lines.persist(StorageLevel.apply(1, 3)); *Spark est fault-tolerant grâce au graphe d’exécution qui enregistre la suite des opérations effectuées sur un RDD
  13. 13. Côté performances
  14. 14. Ecosystème Spark Streaming

×