Démarrage : ingérer et insérer des données supplémentaires
Cet article de démarrage vous guide tout au long de l’utilisation d’un notebook Azure Databricks pour ingérer un fichier CSV contenant d’autres données sur les noms de nouveaux-nés dans votre volume Unity Catalog, puis importer les nouvelles données de noms de bébés dans une table existante en utilisant Python, Scala et R.
Important
Cet article de démarrage s’appuie sur Bien démarrer : Importer et visualiser des données CSV depuis un notebook. Vous devez terminer les étapes de cet article pour l’achever. Pour découvrir un notebook complet pour cet article de démarrage, voir Importer et visualiser des notebooks de données.
Spécifications
Pour effectuer les tâches décrites dans cet article, vous devez répondre aux exigences suivantes :
- Unity Catalog doit être activé pour votre espace de travail. Pour bien démarrer avec Unity Catalog, consultez Configurer et gérer Unity Catalog.
- L’utilisateur doit disposer du privilège
WRITE VOLUME
sur un volume, du privilègeUSE SCHEMA
sur le schéma parent, et du privilègeUSE CATALOG
sur le catalogue parent. - Vous devez avoir l’autorisation d’utiliser une ressource de calcul existante ou d’en créer une. Consultez Démarrage : configuration d’un compte et d’un espace de travail ou contactez votre administrateur Databricks.
Conseil
Pour découvrir un notebook terminé pour cet article, voir Ingérer des notebooks de données supplémentaires.
Étape 1 : créer un notebook
Pour créer un notebook dans votre espace de travail, cliquez sur Nouveau dans la barre latérale, puis sur Notebook. Un notebook vide s’ouvre dans l’espace de travail.
Pour en savoir plus sur la création et la gestion des notebooks, consultez Gérer les notebooks.
Étape 2 : Définir des variables
Dans cette étape, vous définissez des variables à utiliser dans l’exemple de notebook que vous créez dans cet article.
Copiez et collez le code suivant dans la nouvelle cellule de notebook vide. Remplacez
<catalog-name>
,<schema-name>
et<volume-name>
par les noms de catalogue, de schéma et de volume d’un volume Unity Catalog. Remplacez éventuellement la valeurtable_name
par le nom de table de votre choix. Plus loin dans cet article, vous allez charger les données des noms de nouveaux-nés dans cette table.Appuyez sur
Shift+Enter
pour exécuter la cellule et créer une cellule vide.Python
catalog = "<catalog_name>" schema = "<schema_name>" volume = "<volume_name>" file_name = "new_baby_names.csv" table_name = "baby_names" path_volume = "/Volumes/" + catalog + "/" + schema + "/" + volume path_table = catalog + "." + schema print(path_table) # Show the complete path print(path_volume) # Show the complete path
Scala
val catalog = "<catalog_name>" val schema = "<schema_name>" val volume = "<volume_name>" val fileName = "new_baby_names.csv" val tableName = "baby_names" val pathVolume = s"/Volumes/${catalog}/${schema}/${volume}" val pathTable = s"${catalog}.${schema}" print(pathVolume) // Show the complete path print(pathTable) // Show the complete path
R
catalog <- "<catalog_name>" schema <- "<schema_name>" volume <- "<volume_name>" file_name <- "new_baby_names.csv" table_name <- "baby_names" path_volume <- paste0("/Volumes/", catalog, "/", schema, "/", volume, sep = "") path_table <- paste0(catalog, ".", schema, sep = "") print(path_volume) # Show the complete path print(path_table) # Show the complete path
Étape 3 : ajouter un nouveau fichier CSV de données dans votre volume Unity Catalog
Cette étape crée un DataFrame nommé df
avec un nouveau nom de nouveau-né pour 2022, puis enregistre ces données dans un nouveau fichier CSV de votre volume Unity Catalog.
Remarque
Cette étape simule l’ajout de nouvelles données annuelles aux données existantes des années précédentes. Dans votre environnement de production, ces données incrémentielles seront stockées dans un stockage cloud.
Copiez et collez le code suivant dans la nouvelle cellule de notebook vide. Ce code crée le DataFrame avec les données supplémentaires de noms de nouveaux-nés, puis écrit ces données dans un fichier CSV de votre volume Unity Catalog.
Python
data = [[2022, "CARL", "Albany", "M", 42]] df = spark.createDataFrame(data, schema="Year int, First_Name STRING, County STRING, Sex STRING, Count int") # display(df) (df.coalesce(1) .write .option("header", "true") .mode("overwrite") .csv(f"{path_volume}/{file_name}"))
Scala
val data = Seq((2022, "CARL", "Albany", "M", 42)) val columns = Seq("Year", "First_Name", "County", "Sex", "Count") val df = data.toDF(columns: _*) // display(df) df.coalesce(1) .write .option("header", "true") .mode("overwrite") .csv(f"{pathVolume}/{fileName}")
R
# Load the SparkR package that is already preinstalled on the cluster. library(SparkR) data <- data.frame(Year = 2022, First_Name = "CARL", County = "Albany", Sex = "M", Count = 42) df <- createDataFrame(data) # display(df) write.df(df, path = paste0(path_volume, "/", file_name), source = "csv", mode = "overwrite", header = "true")
Appuyez sur
Shift+Enter
pour exécuter la cellule et passer à la cellule suivante.
Étape 4 : charger des données dans un DataFrame à partir d’un fichier CSV
Remarque
Cette étape simule le chargement de données à partir d’un stockage cloud.
Copiez et collez le code suivant dans une cellule de notebook vide. Ce code charge les nouvelles données de noms de bébés dans un DataFrame à partir du fichier CSV.
Python
df1 = spark.read.csv(f"{path_volume}/{file_name}", header=True, inferSchema=True, sep=",") display(df1)
Scala
val df1 = spark.read .option("header", "true") .option("inferSchema", "true") .option("delimiter", ",") .csv(s"$pathVolume/$fileName") display(df1)
R
df1 <- read.df(paste0(path_volume, "/", file_name), source = "csv", header = TRUE, inferSchema = TRUE) display(df1)
Appuyez sur
Shift+Enter
pour exécuter la cellule et passer à la cellule suivante.
Étape 5 : insertion dans une table existante
Copiez et collez le code suivant dans une cellule de notebook vide. Ce code ajouter les nouvelles données sur les noms de bébés du DataFrame dans la table existante.
Python
df.write.mode("append").insertInto(f"{path_table}.{table_name}") display(spark.sql(f"SELECT * FROM {path_table}.{table_name} WHERE Year = 2022"))
Scala
df1.write.mode("append").insertInto(s"${pathTable}.${tableName}") display(spark.sql(s"SELECT * FROM ${pathTable}.${tableName} WHERE Year = 2022"))
R
# The write.df function in R, as provided by the SparkR package, does not directly support writing to Unity Catalog. # In this example, you write the DataFrame into a temporary view and then use the SQL command to insert data from the temporary view to the Unity Catalog table createOrReplaceTempView(df1, "temp_view") sql(paste0("INSERT INTO ", path_table, ".", table_name, " SELECT * FROM temp_view")) display(sql(paste0("SELECT * FROM ", path_table, ".", table_name, " WHERE Year = 2022")))
Appuyez sur
Ctrl+Enter
pour exécuter la cellule.
Ingérer d’autres notebooks de données
Utilisez l’un des notebooks suivants pour effectuer les étapes contenues dans cet article. Remplacez <catalog-name>
, <schema-name>
et <volume-name>
par les noms de catalogue, de schéma et de volume d’un volume Unity Catalog. Remplacez éventuellement la valeur table_name
par le nom de table de votre choix.
Python
Ingérer et insérer des données supplémentaires en utilisant Python
Scala
Ingérer et insérer des données supplémentaires en utilisant Scala
R
Ingérer et insérer des données supplémentaires en utilisant R
Étapes suivantes
Pour en savoir plus sur le nettoyage et l’amélioration des données, consultez Prise en main : améliorer et nettoyer les données.