1. Apprendre
  2. /
  3. Cours
  4. /
  5. Introduction à Spark avec sparklyr en R

Connected

Exercice

Travailler avec des fichiers Parquet

Les fichiers CSV sont excellents pour enregistrer sur disque le contenu d'objets de données rectangulaires (comme les data.frame en R et les DataFrames de Spark). Le problème, c'est qu'ils sont très lents à lire et à écrire, ce qui les rend peu pratiques pour les grands jeux de données. Les fichiers Parquet offrent une solution plus performante. En plus d'être utilisés avec les données de Spark, les fichiers Parquet peuvent aussi être exploités avec d'autres outils de l'écosystème Hadoop, comme Shark, Impala, Hive et Pig.

Techniquement, parler de « fichier Parquet » est impropre. Lorsque vous enregistrez des données en format Parquet, vous obtenez en fait tout un répertoire de fichiers. Les données sont réparties entre plusieurs fichiers .parquet, ce qui facilite leur stockage sur plusieurs machines, et on trouve aussi des fichiers de métadonnées décrivant le contenu de chaque colonne.

sparklyr peut importer des fichiers Parquet grâce à spark_read_parquet(). Cette fonction prend une connexion Spark, une chaîne qui nomme le DataFrame Spark à créer et un chemin vers le répertoire Parquet. Notez que cette fonction importe les données directement dans Spark, ce qui est généralement plus rapide que d'importer d'abord dans R, puis d'utiliser copy_to() pour copier les données de R vers Spark.

spark_read_parquet(sc, "a_dataset", "path/to/parquet/dir")

Instructions

100 XP

Une connexion Spark a été créée pour vous sous le nom spark_conn. Une chaîne pointant vers le répertoire Parquet (sur le système de fichiers où R s'exécute) a été créée sous le nom parquet_dir.

  • Utilisez dir() pour lister les chemins de fichiers absolus des fichiers dans le répertoire Parquet, et assignez le résultat à filenames.
    • Le premier argument doit être le répertoire dont vous listez les fichiers, parquet_dir.
    • Pour récupérer les chemins de fichiers absolus (plutôt que relatifs), vous devez aussi passer full.names = TRUE.
  • Créez un data_frame avec deux colonnes.
    • filename doit contenir les noms de fichiers que vous venez d'obtenir, sans la partie répertoire. Créez cette colonne en passant les noms de fichiers à basename().
    • size_bytes doit contenir la taille de ces fichiers. Créez cette colonne en passant les noms de fichiers à file.size().
  • Utilisez spark_read_parquet() pour importer les données de timbre dans Spark et assignez le résultat à timbre_tbl.
    • Le premier argument doit être la connexion Spark.
    • Le deuxième argument doit être "timbre".
    • Le troisième argument doit être parquet_dir.