Aan de slag: aanvullende gegevens opnemen en invoegen
In dit aan de slag-artikel wordt u begeleid bij het gebruik van een Azure Databricks-notebook om een CSV-bestand met extra babynaamgegevens op te nemen in uw Unity Catalog-volume en vervolgens de nieuwe babynaamgegevens te importeren in een bestaande tabel met behulp van Python, Scala en R.
Belangrijk
Dit aan de slag-artikel bouwt voort op Aan de slag: CSV-gegevens importeren en visualiseren vanuit een notebook. U moet de stappen in dat artikel uitvoeren om dit artikel te voltooien. Zie Gegevensnotitieblokken importeren en visualiseren voor het volledige notitieblok voor dat aan de slag-artikel.
Vereisten
Als u de taken in dit artikel wilt uitvoeren, moet u voldoen aan de volgende vereisten:
- Voor uw werkruimte moet Unity Catalog zijn ingeschakeld. Zie Unity Catalog instellen en beheren voor meer informatie over hoe u aan de slag gaat met Unity Catalog.
- U moet beschikken over de
WRITE VOLUME
bevoegdheid op een volume, deUSE SCHEMA
bevoegdheid voor het bovenliggende schema en deUSE CATALOG
bevoegdheid voor de bovenliggende catalogus. - U moet gemachtigd zijn om een bestaande rekenresource te gebruiken of een nieuwe rekenresource te maken. Zie Aan de slag met Azure Databricks of neem contact op met uw Databricks-beheerder.
Tip
Zie Aanvullende gegevensnotitieblokken opnemen voor een voltooid notitieblok voor dit artikel.
Stap 1: Een nieuw notitieblok maken
Als u een notitieblok in uw werkruimte wilt maken, klikt u op Nieuw in de zijbalk en vervolgens op Notitieblok. Er wordt een leeg notitieblok geopend in de werkruimte.
Zie Notitieblokken beheren voor meer informatie over het maken en beheren van notitieblokken.
Stap 2: Variabelen definiƫren
In deze stap definieert u variabelen voor gebruik in het voorbeeldnotitieblok dat u in dit artikel maakt.
Kopieer en plak de volgende code in de nieuwe lege notebookcel. Vervang ,
<catalog-name>
en<schema-name>
door<volume-name>
de catalogus-, schema- en volumenamen voor een Unity Catalog-volume. Vervang eventueel detable_name
waarde door een tabelnaam van uw keuze. U slaat de gegevens van de babynaam verderop in dit artikel op in deze tabel.Druk
Shift+Enter
om de cel uit te voeren en een nieuwe lege cel te maken.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
Stap 3: Nieuw CSV-bestand met gegevens toevoegen aan uw Unity Catalog-volume
Met deze stap maakt u een DataFrame met df
een nieuwe babynaam voor 2022 en slaat u die gegevens vervolgens op in een nieuw CSV-bestand in uw Unity Catalog-volume.
Notitie
Deze stap simuleert het toevoegen van nieuwe jaarlijkse gegevens aan de bestaande gegevens die voor de voorgaande jaren zijn geladen. In uw productieomgeving worden deze incrementele gegevens opgeslagen in cloudopslag.
Kopieer en plak de volgende code in de nieuwe lege notebookcel. Met deze code maakt u het DataFrame met aanvullende babynaamgegevens en schrijft u die gegevens vervolgens naar een CSV-bestand in uw Unity Catalog-volume.
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")
Druk
Shift+Enter
om de cel uit te voeren en naar de volgende cel te gaan.
Stap 4: Gegevens laden in DataFrame vanuit een CSV-bestand
Notitie
Deze stap simuleert het laden van gegevens uit cloudopslag.
Kopieer en plak de volgende code in een lege notebookcel. Met deze code worden de gegevens van de nieuwe babynamen in een nieuw DataFrame uit het CSV-bestand geladen.
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)
Druk
Shift+Enter
om de cel uit te voeren en naar de volgende cel te gaan.
Stap 5: Invoegen in bestaande tabel
Kopieer en plak de volgende code in een lege notebookcel. Met deze code worden de gegevens van de nieuwe babynamen uit het DataFrame toegevoegd aan de bestaande tabel.
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")))
Druk
Ctrl+Enter
om de cel uit te voeren.
Extra gegevensnotitieblokken opnemen
Gebruik een van de volgende notebooks om de stappen in dit artikel uit te voeren. Vervang , <catalog-name>
en <schema-name>
door <volume-name>
de catalogus-, schema- en volumenamen voor een Unity Catalog-volume. Vervang eventueel de table_name
waarde door een tabelnaam van uw keuze.
Python
Aanvullende gegevens opnemen en invoegen met behulp van Python
Scala
Aanvullende gegevens opnemen en invoegen met Behulp van Scala
R
Aanvullende gegevens opnemen en invoegen met R
Volgende stappen
Zie Aan de slag voor meer informatie over het opschonen en verbeteren van gegevens: Gegevens verbeteren en opschonen.