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 privilegioUSE SCHEMA
per lo schema padre e il privilegioUSE 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 Nuovo 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.
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 valoretable_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.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.
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")
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.
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)
Premere
Shift+Enter
per eseguire la cella e poi passare alla cella successiva.
Passaggio 5: Inserire nella tabella esistente
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")))
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.