CommencerCommencez gratuitement

Donnez une nouvelle étincelle* à vos données (\*en anglais, Spark signifie étincelle)

Dans le dernier exercice, vous avez appris à transférer des données de Spark vers pandas. Cependant, vous pourriez souhaiter procéder de manière différente et intégrer un DataFrame pandas dans un cluster Spark. La classe SparkSession dispose également d'une méthode à cet effet.

La méthode .createDataFrame() prend un DataFrame pandas et renvoie un Spark DataFrame.

Le résultat de cette méthode est stocké localement, et non dans le catalogue de SparkSession. Cela signifie que vous pouvez utiliser toutes les méthodes Spark DataFrame sur celui-ci, mais vous ne pouvez pas accéder aux données dans d'autres contextes.

Par exemple, une requête SQL (utilisant la méthode .sql()) qui fait référence à votre DataFrame générera une erreur. Pour accéder aux données de cette manière, il est nécessaire de les enregistrer dans une table temporaire.

Vous pouvez effectuer cette opération à l'aide de la méthode Spark DataFrame .createTempView(), qui prend comme seul argument le nom de la table temporaire que vous souhaitez enregistrer. Cette méthode enregistre le DataFrame en tant que table dans le catalogue, mais comme cette table est temporaire, elle n'est accessible qu'à partir de SparkSession spécifique, utilisé pour créer le Spark DataFrame.

Il existe également la méthode .createOrReplaceTempView(). Cela permet de créer en toute sécurité une nouvelle table temporaire si aucune n'existait auparavant, ou de mettre à jour une table existante si elle était déjà définie. Veuillez utiliser cette méthode pour éviter les problèmes liés aux tables en double.

Veuillez consulter le diagramme pour découvrir les différentes façons dont vos structures de données Spark interagissent entre elles.

Il existe déjà un fichier SparkSession nommé spark dans votre espace de travail. Le fichier numpy a été importé sous le nom np et le fichier pandas sous le nom pd.

Cet exercice fait partie du cours

<cours>Principes fondamentaux de PySpark</cours>
Voir le cours

Instructions de l’exercice

  • Le code permettant de créer un DataFrame pandas de nombres aléatoires a déjà été fourni et enregistré sous pd_temp.
  • Créez un Spark DataFrame appelé spark_temp en appelant la méthode Spark .createDataFrame() avec pd_temp comme argument.
  • Veuillez examiner la liste des tables dans votre cluster Spark et vérifiez que le nouveau DataFrame n'est pas présent. Veuillez noter que vous pouvez utiliser spark.catalog.listTables() pour ce faire.
  • Enregistrez le DataFrame spark_temp que vous venez de créer en tant que table temporaire à l'aide de la méthode .createOrReplaceTempView(). La table temporaire doit être nommée "temp". Veuillez noter que le nom de la table est défini en l'incluant comme seul argument de votre méthode.
  • Veuillez examiner à nouveau la liste des tables.

Exercice interactif pratique

Essayez cet exercice en complétant ce code d’exemple.

# Create pd_temp
pd_temp = pd.DataFrame(np.random.random(10))

# Create spark_temp from pd_temp
spark_temp = ____

# Examine the tables in the catalog
print(____)

# Add spark_temp to the catalog
spark_temp.____

# Examine the tables in the catalog again
print(____)
Modifier et exécuter le code