共用方式為


入門:內嵌並插入其他資料

本入門文章將逐步引導您使用 Azure Databricks 筆記本將包含其他嬰兒姓名資料的 CSV 檔案內嵌到 Unity Catalog 磁碟區,然後使用 Python、Scala 和 R 將新的嬰兒姓名資料匯入到現有的資料表。

重要

本入門文章以入門:從筆記本匯入並視覺化 CSV 資料為基礎。 您必須完成該文章中的步驟,才能完成本文。 如需該入門文章的完整筆記本,請參閱匯入並視覺化資料筆記本

需求

若要完成這項工作,請確定您符合下列需求:

  • 工作區必須已啟用 Unity 目錄 。 如需開始使用 Unity 目錄的資訊,請參閱 設定與管理 Unity 目錄
  • 您必須具有磁碟區的 WRITE VOLUME 權限、家長結構描述的 USE SCHEMA 權限,以及家長目錄的 USE CATALOG 權限。
  • 您必須擁有使用現有計算資源或建立新計算資源的權限。 請參閱 開始使用:帳戶與工作區設定 ,或查看您的 Databricks 系統管理員。

提示

如需本文已完成的筆記本,請參閱內嵌其他資料筆記本

步驟 1:建立新的筆記本

若要在工作區中建立筆記本,請按一下提要欄位的 新增圖示 新增 ,然後按一下 筆記本。 空白筆記本會在工作區中開啟。

若要深入瞭解如何建立並管理筆記本,請參閱 管理筆記本

步驟 2:定義變數

在此步驟中,您會定義變數,以用於本文中建立的範例筆記本。

  1. 請將下列程式碼複製並貼到全新空白筆記本資料格。 使用 Unity 目錄磁碟區的目錄、結構描述和磁碟區名稱取代 <catalog-name><schema-name><volume-name>。 選擇性地以您選擇的資料表名稱取代 table_name 值。 本文稍後會將嬰兒姓名資料儲存到此資料表中。

  2. 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 檔案。

注意

此步驟會模擬將新的年度資料新增至歷年載入的現有資料。 在實際執行環境中,此增量資料將儲存在雲端儲存體中。

  1. 複製下列程式碼並粘貼到新的空筆記本儲存格中。 此程式碼會建立具有其他嬰兒姓名資料的 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")
    
  2. 按下 Shift+Enter 以執行儲存格,然後移至下一個儲存格。

步驟 4:從 CSV 檔案將資料載入到 DataFrame

注意

此步驟會模擬從雲端儲存體載入資料。

  1. 複製下列程式碼並貼到空的筆記本儲存格。 此程式碼會從 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)
    
  2. 按下 Shift+Enter 以執行儲存格,然後移至下一個儲存格。

步驟 5:插入到現有的資料表

  1. 複製下列程式碼並貼到空的筆記本儲存格。 此程式碼會將新的嬰兒姓名資料從 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")))
    
  2. 按下 Ctrl+Enter 以執行儲存格。

內嵌其他資料筆記本

使用下列其中一個筆記本來執行本文中的步驟。 使用 Unity 目錄磁碟區的目錄、結構描述和磁碟區名稱取代 <catalog-name><schema-name><volume-name>。 選擇性地以您選擇的資料表名稱取代 table_name 值。

Python

使用 Python 內嵌和插入其他資料

取得筆記本

Scala

使用 Scala 內嵌和插入其他資料

取得筆記本

R

使用 R 內嵌和插入其他資料

取得筆記本

下一步

若要了解清理和增強資料,請參閱入門:增強和清理資料

其他資源