Partager via


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 :

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 :

  1. Cliquez sur sur Nouvelle icône Nouveau dans la barre latérale, puis sur Notebook.
  2. Sur la page Créer un notebook :
    • Attribuez un nom unique à votre notebook.
    • Définissez le langage par défaut de votre notebook, puis cliquez sur Confirmer si vous y êtes invité.
    • Cliquez sur Se connecter et sélectionnez une ressource de calcul. Pour créer une ressource de calcul, consultez Utiliser le calcul.

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.

  1. 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 <table_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.

  2. 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.

  1. 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")
    
  2. 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.

  1. 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)
    
  2. Appuyez sur Shift+Enter pour exécuter la cellule et passer à la cellule suivante.

Étape 5 : insertion dans une table existante

  1. 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")))
    
  2. 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.

Python

Ingérer et insérer des données supplémentaires en utilisant Python

Obtenir le notebook

Scala

Ingérer et insérer des données supplémentaires en utilisant Scala

Obtenir le notebook

R

Ingérer et insérer des données supplémentaires en utilisant R

Obtenir le notebook

É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.

Ressources supplémentaires