入門:內嵌並插入其他資料
本入門文章將逐步引導您使用 Azure Databricks 筆記本將包含其他嬰兒姓名資料的 CSV 檔案內嵌到 Unity Catalog 磁碟區,然後使用 Python、Scala 和 R 將新的嬰兒姓名資料匯入到現有的資料表。
重要
本入門文章以入門:從筆記本匯入並視覺化 CSV 資料為基礎。 您必須完成該文章中的步驟,才能完成本文。 如需該入門文章的完整筆記本,請參閱匯入並視覺化資料筆記本。
需求
若要完成這項工作,請確定您符合下列需求:
- 工作區必須已啟用 Unity 目錄 。 如需開始使用 Unity 目錄的資訊,請參閱 設定與管理 Unity 目錄。
- 您必須具有磁碟區的
WRITE VOLUME
權限、家長結構描述的USE SCHEMA
權限,以及家長目錄的USE CATALOG
權限。 - 您必須擁有使用現有計算資源或建立新計算資源的權限。 請參閱 開始使用:帳戶與工作區設定 ,或查看您的 Databricks 系統管理員。
提示
如需本文已完成的筆記本,請參閱內嵌其他資料筆記本。
步驟 1:建立新的筆記本
若要在工作區中建立筆記本,請按一下提要欄位的 新增 ,然後按一下 筆記本。 空白筆記本會在工作區中開啟。
若要深入瞭解如何建立並管理筆記本,請參閱 管理筆記本。
步驟 2:定義變數
在此步驟中,您會定義變數,以用於本文中建立的範例筆記本。
請將下列程式碼複製並貼到全新空白筆記本資料格。 使用 Unity 目錄磁碟區的目錄、結構描述和磁碟區名稱取代
<catalog-name>
、<schema-name>
和<volume-name>
。 選擇性地以您選擇的資料表名稱取代table_name
值。 本文稍後會將嬰兒姓名資料儲存到此資料表中。按
Shift+Enter
以執行資料格並建立新的空白資料格。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
步驟 3:將新的 CSV 資料檔案新增至 Unity Catalog 磁碟區
此步驟會建立一個名為 df
且包含 2022 年新嬰兒姓名的 DataFrame,然後將該資料儲存到 Unity Catalog 磁碟區中的新 CSV 檔案。
注意
此步驟會模擬將新的年度資料新增至歷年載入的現有資料。 在實際執行環境中,此增量資料將儲存在雲端儲存體中。
複製下列程式碼並粘貼到新的空筆記本儲存格中。 此程式碼會建立具有其他嬰兒姓名資料的 DataFrame,然後將該資料寫入 Unity Catalog 磁碟區中的 CSV 檔案。
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")
按下
Shift+Enter
以執行儲存格,然後移至下一個儲存格。
步驟 4:從 CSV 檔案將資料載入到 DataFrame
注意
此步驟會模擬從雲端儲存體載入資料。
複製下列程式碼並貼到空的筆記本儲存格。 此程式碼會從 CSV 檔案將新的嬰兒姓名資料載入到新的 DataFrame。
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)
按下
Shift+Enter
以執行儲存格,然後移至下一個儲存格。
步驟 5:插入到現有的資料表
複製下列程式碼並貼到空的筆記本儲存格。 此程式碼會將新的嬰兒姓名資料從 DataFrame 附加到現有的資料表。
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")))
按下
Ctrl+Enter
以執行儲存格。
內嵌其他資料筆記本
使用下列其中一個筆記本來執行本文中的步驟。 使用 Unity 目錄磁碟區的目錄、結構描述和磁碟區名稱取代 <catalog-name>
、<schema-name>
和 <volume-name>
。 選擇性地以您選擇的資料表名稱取代 table_name
值。
Python
使用 Python 內嵌和插入其他資料
Scala
使用 Scala 內嵌和插入其他資料
R
使用 R 內嵌和插入其他資料
下一步
若要了解清理和增強資料,請參閱入門:增強和清理資料。