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 :
> $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 :
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)
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.
Partager