Delen via


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, de USE SCHEMA bevoegdheid voor het bovenliggende schema en de USE 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.

Stap 1: Een nieuw notitieblok maken

Als u een notitieblok in uw werkruimte wilt maken, klikt u op Nieuw pictogramNieuw 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.

  1. 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 de table_name waarde door een tabelnaam van uw keuze. U slaat de gegevens van de babynaam verderop in dit artikel op in deze tabel.

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

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

  1. 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)
    
  2. Druk Shift+Enter om de cel uit te voeren en naar de volgende cel te gaan.

Stap 5: Invoegen in bestaande tabel

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

Notebook downloaden

Scala

Aanvullende gegevens opnemen en invoegen met Behulp van Scala

Notebook downloaden

R

Aanvullende gegevens opnemen en invoegen met R

Notebook downloaden

Volgende stappen

Zie Aan de slag voor meer informatie over het opschonen en verbeteren van gegevens: Gegevens verbeteren en opschonen.

Aanvullende bronnen