共用方式為


開始使用:匯入並插入額外數據

本入門文章會逐步引導您使用 Azure Databricks Notebook 將包含其他嬰兒名稱數據的 CSV 檔案內嵌至 Unity 目錄磁碟區,然後使用 Python、Scala 和 R 將新的嬰兒名稱數據匯入現有的數據表。

重要

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

需求

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

  • 您工作區必須啟用 Unity Catalog。 如需開始使用 Unity 目錄的資訊,請參閱 設定和管理 Unity 目錄
  • 您必須擁有磁碟區 WRITE VOLUME 許可權、父架構的 USE SCHEMA 許可權,以及父目錄上的 USE CATALOG 許可權。
  • 您必須擁有使用現有計算資源或建立新計算資源的權限。 請參閱 開始使用 Azure Databricks,或諮詢您的 Databricks 系統管理員。

提示

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

步驟 1:建立新的筆記本

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

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

步驟 2:定義變數

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

  1. 請將下列程式碼複製並貼到全新空白筆記本資料格。 將 <catalog-name><schema-name><volume-name> 替換為 Unity Catalog 磁碟區的目錄、架構和卷名稱。 可選擇將 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 目錄磁碟區

此步驟會建立名為 df 且具有 2022 年新嬰兒名稱的數據框架,然後將該數據儲存至 Unity 目錄磁碟區中的新 CSV 檔案。

注意

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

  1. 請將下列程式碼複製並貼到全新空白筆記本資料格。 此程式代碼會建立具有其他嬰兒名稱數據的 DataFrame,然後將該數據寫入 Unity 目錄磁碟區中的 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 以執行儲存格。

內嵌其他資料筆記本

使用下列其中一個筆記本來執行本文中的步驟。 將 <catalog-name><schema-name><volume-name> 替換為 Unity Catalog 磁碟區的目錄、架構和磁碟區名稱。 選擇性地將 table_name 值取代為您選擇的數據表名稱。

Python

使用 Python 內嵌和插入其他數據

取得筆記本

Scala

使用 Scala 內嵌和插入其他數據

取得筆記本

R

使用 R 內嵌和插入其他數據

取得筆記本

下一步

若要瞭解清理和增強數據,請參閱 開始使用:增強和清理數據

其他資源