IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Big Data Discussion :

exercice - Spark


Sujet :

Big Data

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2016
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2016
    Messages : 2
    Par défaut exercice - Spark
    j'ai 2 fichiers csv et je dois créer un seul rdd contenant des éléments des 2 csv.

    Comment les données s'ajoutent dans la rdd ? Est ce que les colonnes s'ajoutent une par une ?
    Je dois récupérer la colonne du 2ème fichier csv dans la rdd. Je fais un split mais comment trouver le numéro de la colonne pour récupérer les données du 2è fichier csv ?

  2. #2
    Expert Oracle confirmé

    Homme Profil pro
    Consultant Big Data
    Inscrit en
    Mars 2003
    Messages
    448
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Consultant Big Data
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2003
    Messages : 448
    Par défaut
    Bonjour,

    Je débute dans le monde du Big Data, et depuis 4 mois, je suis en train de m'autoformer en suivant un MOOC (une formation en ligne).

    Je ne suis pas expert, mais je pense pouvoir te donner qq conseils utiles.

    Tu es sous Spark, et tu veux utiliser un RDD (Resilient Distributed Dataset). C'est bien, mais un RDD est plutôt fait pour traiter des fichiers ligne par ligne.

    Il faut en fait que tu t'intéresses aux DataFrames, qui sont faits entre autre pour gérer des données tabulaires, donc parfaits pour traiter les fichiers CSV.

    Pour info, les DF servent aussi à faire du SQL sous Spark, mais pour cela il faut aussi avoir HIVE d'installé sur ton infrastructure (pour ma part je me forme sur une VM Cloudera).

    Les DF (DataFrames) savent référencer les colonnes des fichiers par leur nom, au lieu d'utiliser un index pour spécifier la colonne.

    Pour traiter des fichiers CSV, il faut utiliser le package SPARK-CSV, ce package se trouvant sous le site http://spark-packages.org

    Pour ta culture, Spark est maintenu par la fondation Apache, et doit être considéré comme un logiciel "léger" (Spark se veut modulaire).

    Les fonctions additionnelles se trouvent donc sur le site spécifié ci-dessus, site maintenu par la société Databricks, une société créée par les fondateurs d'Apache Spark.

    Va sur ce site STP et cherche le package SPARK-CSV.

    La section "How to" te montre comment appeler ce package :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    > $SPARK_HOME/bin/spark-shell --packages com.databricks:spark-csv_2.11:1.4.0
    Comme tu peux le voir, il faut utiliser l'argument --packages. Cela est valable sous spark-shell, mais aussi pour pyspark ou spark-submit.


    Voici un autre exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    PYSPARK_DRIVER_PYTHON=ipython pyspark --packages com.databricks:spark-csv_2.11:1.4.0



    Maintenant voici un exemple que j'avais utilisé pour créer un DF à partir d'un fichier CSV.

    Si tu as utilisé des RDD, tu connais donc la variable sc qui permet d'accéder au Spark Context.

    Pour un DF, c'est pareil, mais on utilise la variable sqlCtx qui est le SQL Spark Context (rappelle toi que les DF te permettent aussi de faire du SQL).

    Le paramètre "header" à TRUE indique que le fichier CSV contient en entête le nom des colonnes. Quant au paramètre "inferSchema" à TRUE, c'est pour que le type de données de chaque colonne soit déterminé de manière automatique)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    yelp_df = sqlCtx.load(source='com.databricks.spark.csv',
    header = 'true',
    inferSchema = 'true',
    path = 'file:///usr/lib/hue/apps/search/examples/collections/solr_configs_yelp_demo/index_data.csv')
    
    yelp_df.printSchema()


    Pour finir, je n'ai pas été beaucoup plus loin, mais il existe la fonction unionAll qui retourne un nouveau DF qui est l'Union All de 2 DF.

    En espérant t'avoir mis sur la voie.

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    221
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 221
    Par défaut
    Bonjour rouardg,
    Pour info, les DF servent aussi à faire du SQL sous Spark, mais pour cela il faut aussi avoir HIVE d'installé sur ton infrastructure
    Sauf risque de me tromper je penses pas que ce soit nécessaire d'avoir Hive à moins que tu ne veuilles visualiser tes résultats sur la VM Cloudera.
    Car pour traviller avec des dataframes sous SPark, tout ce dont t'as besoin est le SQLContext que tu crée en utilisant SQLContext(sc).
    Donc pour être plus explicite, un truc du genre:
    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    import pandas as pd
    mtcars = pd.read_csv('https://toto/tata/titi.csv')
    sqlContext = SQLContext(sc) # Initialize SQLContext
    sdf = sqlContext.createDataFrame(mtcars) 
    sdf.printSchema()
    Partant de ce postulat je peux faire du SQL (comme tu l'as affirmé) à condition d'enregistrer sous forme de table le dataframe crée
    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    sdf.registerTempTable("cars") # Enregistrement sous forme de table
     
    highgearcars = sqlContext.sql("SELECT gear FROM cars WHERE cyl >= 4 AND cyl <= 9") # Utilisation du SQL classique
    highgearcars.show(6)

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    221
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 221
    Par défaut
    Citation Envoyé par soso573 Voir le message
    j'ai 2 fichiers csv et je dois créer un seul rdd contenant des éléments des 2 csv.

    Comment les données s'ajoutent dans la rdd ? Est ce que les colonnes s'ajoutent une par une ?
    Je dois récupérer la colonne du 2ème fichier csv dans la rdd. Je fais un split mais comment trouver le numéro de la colonne pour récupérer les données du 2è fichier csv ?
    Bonsoir,
    Je réponds à ton fil avec certainement quelques mois de retard, mais si t'as trouvé la réponse peux-tu clôturer le fil?
    Sinon, je te proposerais de faire:
    1- Un join des eux rdd pour n'avoir qu'un seul au final, mais une fois de plus f=pour effectuer la jointure, il faut la structure des RDD.
    2- Si tu ne veux qu'une partie des données, il faut effectuer un filtre sur les données avant la jointure. Tu peux également (solution élégante) créer un RDD avec uniquement les colonnes (du second RDD) qui t’intéresse.

Discussions similaires

  1. [VB6] Exercice de Combinatoire
    Par fichtre! dans le forum VB 6 et antérieur
    Réponses: 10
    Dernier message: 19/01/2005, 14h27
  2. Un cours de C/C++ avec exercices corrigés
    Par merrheim dans le forum C++
    Réponses: 65
    Dernier message: 18/01/2005, 22h30
  3. Demande de corrections d'exercices Turbo Pascal
    Par Helpine dans le forum Turbo Pascal
    Réponses: 2
    Dernier message: 16/01/2005, 10h38
  4. Pages d'exercices à faire pour l'autoformation ?
    Par [thebadskull] dans le forum Evolutions du club
    Réponses: 13
    Dernier message: 15/06/2004, 20h26
  5. Pouvez vous m'aider a resoudres ces 3 exercices
    Par algorithmique dans le forum Algorithmes et structures de données
    Réponses: 11
    Dernier message: 09/08/2002, 17h26

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo