Condividi tramite


Inizia: Acquisire e inserire dati aggiuntivi

Questo articolo introduttivo illustra in modo dettagliato l'uso di un notebook di Azure Databricks per inserire un file CSV contenente dati aggiuntivi sul nome del bambino nel volume di Unity Catalog e quindi importare i nuovi dati del nome figlio in una tabella esistente usando Python, Scala e R.

Importante

Questo articolo introduttivo si basa su Introduzione: Importare e visualizzare i dati CSV da un notebook. Per portare a termine la procedura descritta in questo articolo, è necessario seguire i passaggi descritti. Per il notebook completo relativo all'articolo introduttivo, si veda Importare e visualizzare notebook di dati.

Requisiti

Per completare queste attività, è necessario soddisfare i requisiti seguenti:

  • L'area di lavoro deve avere abilitata catalogo Unity. Per informazioni su come iniziare a usare Unity Catalog, vedere Configurare e gestire Il catalogo Unity.
  • È necessario avere il privilegio WRITE VOLUME per un volume, il privilegio USE SCHEMA per lo schema padre e il privilegio USE CATALOG sul catalogo padre.
  • È necessario disporre dell'autorizzazione per usare una risorsa di calcolo esistente o creare una nuova risorsa di calcolo. Consulta Introduzione ad Azure Databricks o contatta il tuo amministratore di Databricks.

Suggerimento

Per il Notebook completo per questo articolo, si veda Inserire altri Notebook di dati.

Passaggio 1: Creare un nuovo notebook

Per creare un Notebook nell'area di lavoro, fare clic su Nuova iconaNuovo nella barra laterale e quindi su Notebook. Viene aperto un Notebook vuoto nell'area di lavoro.

Per altre informazioni sulla creazione e la gestione dei Notebook, vedere Gestire i Notebook.

Passaggio 2: definire le variabili

In questo passaggio si definiscono le variabili da usare nel Notebook di esempio creato in questo articolo.

  1. Copiare e incollare il codice seguente nella nuova cella vuota del Notebook. Sostituire <catalog-name>, <schema-name>e <volume-name> con i nomi di catalogo, schema e volume per un volume di Unity Catalog. Facoltativamente, sostituire il valore table_name con un nome di tabella di propria scelta. I dati relativi al nome del bambino verranno salvati in questa tabella più avanti in questo articolo.

  2. Premere Shift+Enter per eseguire la cella e creare una nuova cella vuota.

    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
    

Passaggio 3: Aggiungere un nuovo file CSV di dati al volume del catalogo Unity

Questo passaggio crea un dataframe denominato df con un nuovo nome figlio per 2022 e quindi salva i dati in un nuovo file CSV nel volume di Unity Catalog.

Nota

Questo passaggio simula l'aggiunta di nuovi dati annuali ai dati esistenti caricati per gli anni precedenti. Nell'ambiente di produzione questi dati incrementali vengono memorizzati nell'archiviazione cloud.

  1. Copiare e incollare il codice seguente nella nuova cella vuota del Notebook. Questo codice crea il dataframe con dati aggiuntivi sul nome del bambino e quindi scrive tali dati in un file CSV nel volume di 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. Premere Shift+Enter per eseguire la cella e poi passare alla cella successiva.

Passaggio 4: caricare dati da un file CSV in DataFrame

Nota

Questo passaggio simula il caricamento dei dati dall'archiviazione cloud.

  1. Copiare il codice seguente e incollarlo in una cella vuota del notebook. Questo codice carica i nuovi nomi dei bambini in un nuovo DataFrame dal file 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. Premere Shift+Enter per eseguire la cella e poi passare alla cella successiva.

Passaggio 5: Inserire nella tabella esistente

  1. Copiare il codice seguente e incollarlo in una cella vuota del notebook. Questo codice aggiunge i nuovi dati dei nomi figlio dal DataFrame alla tabella esistente.

    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. Premere Ctrl+Enter per eseguire la cella.

Inserire notebook di dati aggiuntivi

Usare uno dei Notebook seguenti per eseguire la procedura descritta in questo articolo. Sostituire <catalog-name>, <schema-name>e <volume-name> con i nomi di catalogo, schema e volume per un volume di Unity Catalog. Facoltativamente, sostituire il valore table_name con un nome di tabella di propria scelta.

Python

Inserire e inserire dati aggiuntivi con Python

Prendi un notebook

Scala

Acquisire e inserire dati aggiuntivi con Scala

Ottieni il notebook

R

Inserire e inserire dati aggiuntivi con R

Prendere il notebook

Passaggi successivi

Per informazioni sulla pulizia e il miglioramento dei dati, vedere Introduzione: Migliorare e pulire i dati.

Risorse aggiuntive