Udostępnij za pośrednictwem


Wprowadzenie: pozyskiwanie i wstawianie dodatkowych danych

Ten artykuł wprowadzający przeprowadzi Cię przez proces używania notesu usługi Azure Databricks do pozyskiwania pliku CSV zawierającego dodatkowe dane dotyczące nazwy dziecka w woluminie wykazu aparatu Unity, a następnie importowania nowych danych nazwy dziecka do istniejącej tabeli przy użyciu języków Python, Scala i R.

Ważne

Ten artykuł wprowadzający opiera się na artykule Wprowadzenie: importowanie i wizualizowanie danych CSV z notesu. Aby ukończyć ten artykuł, należy wykonać kroki opisane w tym artykule. Aby zapoznać się z pełnym notesem dotyczącym tego artykułu wprowadzającego, zobacz Importowanie i wizualizowanie notesów danych.

Wymagania

Aby wykonać zadania opisane w tym artykule, musisz spełnić następujące wymagania:

  • Obszar roboczy musi mieć włączony katalog aparatu Unity. Aby uzyskać informacje na temat rozpoczynania pracy z wykazem aparatu Unity, zobacz Konfigurowanie wykazu aparatu Unity i zarządzanie nim.
  • Musisz mieć WRITE VOLUME uprawnienia do woluminu, USE SCHEMA uprawnienia w schemacie nadrzędnym i USE CATALOG uprawnienia w katalogu nadrzędnym.
  • Musisz mieć uprawnienia do używania istniejącego zasobu obliczeniowego lub utworzenia nowego zasobu obliczeniowego. Zobacz Wprowadzenie: Konfiguracja konta i obszaru roboczego lub zobacz administratora usługi Databricks.

Napiwek

Aby uzyskać ukończony notes dla tego artykułu, zobacz Pozyskiwanie dodatkowych notesów danych.

Krok 1. Tworzenie nowego notesu

Aby utworzyć notes w obszarze roboczym, kliknij pozycję Nowa ikona Nowy na pasku bocznym, a następnie kliknij przycisk Notes. W obszarze roboczym zostanie otwarty pusty notes.

Aby dowiedzieć się więcej na temat tworzenia notesów i zarządzania nimi, zobacz Zarządzanie notesami.

Krok 2. Definiowanie zmiennych

W tym kroku zdefiniujesz zmienne do użycia w przykładowym notesie utworzonym w tym artykule.

  1. Skopiuj i wklej następujący kod do nowej pustej komórki notesu. Zastąp <catalog-name>wartości , <schema-name>i <volume-name> nazwami wykazu, schematu i woluminu dla woluminu wykazu aparatu Unity. Opcjonalnie zastąp table_name wartość wybraną nazwą tabeli. Dane nazwy dziecka zostaną zapisane w tej tabeli w dalszej części tego artykułu.

  2. Naciśnij Shift+Enter , aby uruchomić komórkę i utworzyć nową pustą komórkę.

    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
    

Krok 3. Dodawanie nowego pliku CSV danych do woluminu wykazu aparatu Unity

W tym kroku zostanie utworzona ramka danych o nazwie df z nową nazwą dziecka dla roku 2022, a następnie zapisze te dane w nowym pliku CSV w woluminie wykazu aparatu Unity.

Uwaga

Ten krok symuluje dodawanie nowych danych rocznych do istniejących danych załadowanych przez poprzednie lata. W środowisku produkcyjnym te przyrostowe dane będą przechowywane w magazynie w chmurze.

  1. Skopiuj i wklej następujący kod do nowej pustej komórki notesu. Ten kod tworzy ramkę danych z dodatkowymi danymi o nazwie dziecka, a następnie zapisuje te dane w pliku CSV w woluminie wykazu aparatu Unity.

    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. Naciśnij , Shift+Enter aby uruchomić komórkę, a następnie przejdź do następnej komórki.

Krok 4. Ładowanie danych do ramki danych z pliku CSV

Uwaga

Ten krok symuluje ładowanie danych z magazynu w chmurze.

  1. Skopiuj i wklej następujący kod do pustej komórki notesu. Ten kod ładuje nowe dane nazw dzieci do nowej ramki danych z pliku 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. Naciśnij , Shift+Enter aby uruchomić komórkę, a następnie przejdź do następnej komórki.

Krok 5. Wstawianie do istniejącej tabeli

  1. Skopiuj i wklej następujący kod do pustej komórki notesu. Ten kod dołącza nowe dane nazw dzieci z ramki danych do istniejącej tabeli.

    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. Naciśnij , Ctrl+Enter aby uruchomić komórkę.

Pozyskiwanie dodatkowych notesów danych

Aby wykonać kroki opisane w tym artykule, użyj jednego z poniższych notesów. Zastąp <catalog-name>wartości , <schema-name>i <volume-name> nazwami wykazu, schematu i woluminu dla woluminu wykazu aparatu Unity. Opcjonalnie zastąp table_name wartość wybraną nazwą tabeli.

Python

Pozyskiwanie i wstawianie dodatkowych danych przy użyciu języka Python

Pobierz notes

Scala

Pozyskiwanie i wstawianie dodatkowych danych przy użyciu języka Scala

Pobierz notes

R

Pozyskiwanie i wstawianie dodatkowych danych przy użyciu języka R

Pobierz notes

Następne kroki

Aby dowiedzieć się więcej o czyszczeniu i ulepszaniu danych, zobacz Wprowadzenie: ulepszanie i oczyszczanie danych.

Dodatkowe zasoby