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 iUSE 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ę 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.
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ąptable_name
wartość wybraną nazwą tabeli. Dane nazwy dziecka zostaną zapisane w tej tabeli w dalszej części tego artykułu.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.
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")
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.
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)
Naciśnij ,
Shift+Enter
aby uruchomić komórkę, a następnie przejdź do następnej komórki.
Krok 5. Wstawianie do istniejącej tabeli
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")))
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
Scala
Pozyskiwanie i wstawianie dodatkowych danych przy użyciu języka Scala
R
Pozyskiwanie i wstawianie dodatkowych danych przy użyciu języka R
Następne kroki
Aby dowiedzieć się więcej o czyszczeniu i ulepszaniu danych, zobacz Wprowadzenie: ulepszanie i oczyszczanie danych.