本教學課程將逐步引導您使用 Azure Databricks 筆記本,透過 Python、Scala 和 R,從來自 health.data.ny.gov 的嬰兒名稱資料 CSV 檔匯入到您的 Unity Catalog 磁碟區中。您也會學習如何修改欄名稱、視覺化資料,以及儲存到表格中。
備註
如果你使用 Databricks 免費版,請選擇 Python 標籤以查看本教學中的所有程式碼範例。 免費版不支援 R 或 Scala。 此外,免費版限制了外網存取,因此你必須透過工作區介面上傳 CSV 檔案,不能用程式碼下載。 詳細說明請參見 步驟3 。
需求
若要完成這項工作,請確定您符合下列需求:
- 工作區必須已啟用 Unity 目錄 。 如需開始使用 Unity 目錄的資訊,請參閱 開始使用 Unity 目錄。 Azure Databricks 免費版和免費試用工作區預設啟用了 Unity 目錄。
- 您必須具有磁碟區的
WRITE VOLUME權限、父結構描述的USE SCHEMA權限,以及父目錄的USE CATALOG權限。 免費版使用者預設擁有工作區目錄與default結構的這些權限。 - 您必須擁有使用現有計算資源或建立新計算資源的權限。 請參閱 Compute 或找你的 Azure Databricks 管理員。
提示
如需本文的完整筆記本,請參閱匯入並視覺化資料筆記本。
步驟 1:建立新的筆記本
若要在工作區中建立筆記本,請按一下提要欄位的
新增 ,然後按一下 筆記本。 空白筆記本會在工作區中開啟。
若要深入瞭解如何建立並管理筆記本,請參閱 管理筆記本。
步驟 2:定義變數
在此步驟中,您會定義變數,以用於本文中建立的範例筆記本。 你需要 Unity Catalog 目錄、結構和容量的名稱。
提示
如果你不知道你的目錄和結構名稱,請點選 目錄 請見側邊欄。 工作區目錄與你的工作區共用名稱,並列在目錄面板中。 展開它可以看到可用的結構圖。 免費版及免費試用版使用者可以使用工作區目錄與
default 架構。
如果你沒有磁碟區,可以在筆記本儲存格執行以下指令(將 和 <catalog_name> 替換<schema_name>成你的值):
CREATE VOLUME IF NOT EXISTS <catalog_name>.<schema_name>.my_volume
請將下列程式碼複製並貼到全新空白筆記本資料格。 請將
<catalog-name>、<schema-name>和<volume-name>替換為 Unity Catalog 磁碟區的目錄、結構描述和磁碟區名稱。 選擇性地以您選擇的資料表名稱取代table_name值。 你可以將嬰兒名字資料儲存到本文後面的表格中。按下
Shift+Enter以執行儲存格並建立新的空白儲存格。Python
catalog = "<catalog_name>" schema = "<schema_name>" volume = "<volume_name>" download_url = "https://health.data.ny.gov/api/views/jxy9-yhdk/rows.csv" file_name = "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 downloadUrl = "https://health.data.ny.gov/api/views/jxy9-yhdk/rows.csv" val fileName = "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 pathR
catalog <- "<catalog_name>" schema <- "<schema_name>" volume <- "<volume_name>" download_url <- "https://health.data.ny.gov/api/views/jxy9-yhdk/rows.csv" file_name <- "baby_names.csv" table_name <- "baby_names" path_volume <- paste("/Volumes/", catalog, "/", schema, "/", volume, sep = "") path_table <- paste(catalog, ".", schema, sep = "") print(path_volume) # Show the complete path print(path_table) # Show the complete path
步驟 3:匯入 CSV 檔案
在此步驟中,將包含嬰兒姓名資料的 CSV 檔案從 health.data.ny.gov 匯入到 Unity Catalog 磁碟區。 請選擇下列其中一個方法:
- 使用工作區介面上傳 — 如果你使用 的是 Databricks 免費版,或是選項 B 的程式碼下載因網路錯誤失敗,請使用此方法。 Free Edition 和其他無伺服器運算環境限制了外接網際網路,因此你必須從本地機器上傳檔案。
- 使用程式碼下載 ——如果您的運算環境有外接網路,請使用此方法。
選項A:使用工作區介面上傳
- 在你本機的電腦上,在瀏覽器開啟 health.data.ny.gov/api/views/jxy9-yhdk/rows.csv 。 檔案下載到你的電腦時,檔案名稱是
rows.csv。 - 在你的電腦上找到下載的檔案,並將其重新命名為
rows.csvbaby_names.csv。 這與你在步驟 2 中定義的變數相符file_name。 - 回到你的 Azure Databricks 工作區。 在側邊欄點選
新增 > 新增或上傳資料。 - 點擊 「上傳檔案到磁碟區」。
- 點擊 瀏覽 並選擇
baby_names.csv檔案,或將其拖曳到上傳區域。 - 在 目的地磁碟區,選擇你在步驟 2 中指定的磁碟區。
- 上傳完成後,回到筆記本繼續步驟 4。
關於上傳檔案的更多細節,請參見 「上傳檔案至Unity Catalog volume」。
選項B:使用程式碼下載
請將下列程式碼複製並貼到全新空白筆記本資料格。 這段程式碼會用
rows.csv指令,將檔案從 health.data.ny.gov 複製到 Unity 目錄卷。按下
Shift+Enter以執行儲存格,然後移至下一個儲存格。Python
dbutils.fs.cp(f"{download_url}", f"{path_volume}" + "/" + f"{file_name}")程式語言 Scala
dbutils.fs.cp(downloadUrl, s"${pathVolume}/${fileName}")R
dbutils.fs.cp(download_url, paste(path_volume, "/", file_name, sep = ""))
步驟 4:將 CSV 資料載入到 DataFrame
在此步驟中,您會使用 spark.read.csv 方法,從之前載入到 Unity Catalog 磁碟區的 CSV 檔案中建立名為 df 的 DataFrame。
請將下列程式碼複製並貼到全新空白筆記本資料格。 此程式碼會從 CSV 檔案將嬰兒姓名資料載入到 DataFrame
df。按下
Shift+Enter以執行儲存格,然後移至下一個儲存格。Python
df = spark.read.csv(f"{path_volume}/{file_name}", header=True, inferSchema=True, sep=",")程式語言 Scala
val df = spark.read .option("header", "true") .option("inferSchema", "true") .option("delimiter", ",") .csv(s"${pathVolume}/${fileName}")R
# Load the SparkR package that is already preinstalled on the cluster. library(SparkR) df <- read.df(paste(path_volume, "/", file_name, sep=""), source="csv", header = TRUE, inferSchema = TRUE, delimiter = ",")
您可以從許多支援的檔案格式載入資料。
步驟 5:視覺化筆記本中的資料
在此步驟中,使用 display() 方法在筆記本的資料表中顯示 DataFrame 的內容,然後在筆記本的文字雲圖表中視覺化資料。
複製下列程式碼並將其貼到新的空筆記本儲存格中,然後按一下 [執行儲存格] 以顯示資料表中的資料。
Python
display(df)程式語言 Scala
display(df)R
display(df)檢閱資料表中的結果。
在 [資料表] 索引標籤旁邊,按一下 +,然後按一下 [視覺效果]。
在視覺效果編輯器中,按一下 [視覺效果類型],並確認已選取 [文字雲]。
在 [文字資料行] 中,確認已選取
First Name。在 [頻率限制] 中,按一下
35。
按一下 [儲存]。
步驟 6:將 DataFrame 儲存至資料表
重要
若要將 DataFrame 儲存在 Unity Catalog 中,您必須具有目錄和結構描述上的 CREATE 資料表權限。 如需有關 Unity Catalog 中的權限的資訊,請參閱 Unity Catalog 中的權限和安全物件和管理 Unity Catalog 中的權限。
複製下列程式碼並貼到空的筆記本儲存格。 此程式碼會取代資料行名稱中的空格。 資料行名稱中不允許使用特殊字元,例如空格。 此程式碼使用 Apache Spark
withColumnRenamed()方法。Python
df = df.withColumnRenamed("First Name", "First_Name") df.printSchema程式語言 Scala
val dfRenamedColumn = df.withColumnRenamed("First Name", "First_Name") // when modifying a DataFrame in Scala, you must assign it to a new variable dfRenamedColumn.printSchema()R
df <- withColumnRenamed(df, "First Name", "First_Name") printSchema(df)複製下列程式碼並貼到空的筆記本儲存格。 此程式碼使用在本文開始時定義的資料表名稱變數在 Unity Catalog 中將 DataFrame 的內容儲存至資料表。
Python
df.write.mode("overwrite").saveAsTable(f"{path_table}" + "." + f"{table_name}")程式語言 Scala
dfRenamedColumn.write.mode("overwrite").saveAsTable(s"${pathTable}.${tableName}")R
saveAsTable(df, paste(path_table, ".", table_name), mode = "overwrite")若要確認資料表已儲存,請按一下左側邊欄中的 [目錄],以開啟目錄總管 UI。 開啟目錄,然後開啟結構描述,以確認資料已出現。
按一下資料表,以檢視 [概觀] 索引標籤上的資料表結構描述。
按一下 [範例資料] 以檢視資料表中的 100 列資料。
匯入並視覺化數據筆記本
使用下列其中一個筆記本來執行本文章的步驟。 請將 <catalog-name>、<schema-name> 和 <volume-name> 替換為 Unity Catalog 磁碟區的目錄、結構描述和磁碟區名稱。 選擇性地以您選擇的資料表名稱取代 table_name 值。
Python
使用 Python 從 CSV 匯入資料
程式語言 Scala
使用 Scala 從 CSV 匯入資料
R
使用 R 從 CSV 匯入資料
下一步
- 若要瞭解探勘數據分析 (EDA) 技術,請參閱 教學課程:使用 Databricks 筆記本的 EDA 技術。
- 若要瞭解如何建置 ETL (擷取、轉換和載入) 管線,請參閱 教學課程:使用 Lakeflow Spark 宣告式管線建置 ETL 管線 和 教學課程:在 Databricks 平台上使用 Apache Spark 建置 ETL 管線