入门:从笔记本导入和可视化 CSV 数据
本文逐步讲解如何使用 Azure Databricks 笔记本将数据从包含婴儿姓名数据(来自 health.data.ny.gov)的 CSV 文件导入到使用 Python、Scala 和 R 的 Unity Catalog 卷中。你还将了解如何修改列名、将数据可视化以及保存到表。
要求
要完成本文中的任务,必须满足以下要求:
- 工作区必须已启用 Unity Catalog。 有关 Unity Catalog 的入门信息,请参阅设置和管理 Unity Catalog。
- 你必须对卷具有
USE SCHEMA
特权,对父架构具有WRITE VOLUME
特权,以及对父目录具有USE CATALOG
特权。 - 你必须有权使用现有计算资源或创建新的计算资源。 请参阅 Azure Databricks 入门或者咨询 Databricks 管理员。
提示
有关本文的已完成笔记本,请参阅导入和可视化数据笔记本。
步骤 1:创建新笔记本
若要在工作区中创建笔记本,请单击边栏中的“ 新建”,然后单击“笔记本”。 将在工作区中打开一个空白笔记本。
若要了解有关创建和管理笔记本的详细信息,请参阅管理笔记本。
步骤 2:定义变量
在此步骤中,定义要在本文中创建的示例笔记本中使用的变量。
将以下代码复制并粘贴到新的空笔记本单元格中: 将
<catalog-name>
、<schema-name>
和<volume-name>
替换为 Unity 目录卷的目录、架构和卷名称。 (可选)将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 path
R
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 dbutuils 命令将
rows.csv
文件从 health.data.ny.gov 复制到 Unity Catalog 卷。按
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 数据加载到数据帧中
在此步骤中,通过使用 spark.read.csv 方法,从之前加载到 Unity Catalog 卷的 CSV 文件中创建名为 df
的数据帧。
将以下代码复制并粘贴到新的空笔记本单元格中: 此代码将婴儿名称数据从 CSV 文件加载到数据帧
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()
方法在笔记本的表中显示数据帧的内容,然后在笔记本的词云图中可视化数据。
将以下代码复制并粘贴到新的空笔记本单元中,然后单击“运行单元格”以表显示数据。
Python
display(df)
Scala
display(df)
R
display(df)
查看表中的结果。
在“表”选项卡旁边,单击 +,然后单击“可视化效果”。
在可视化编辑器中,单击“可视化类型”,然后验证是否已选择“词云”。
在“词列”中,验证是否已选择
First Name
。在“频率限制”中,单击
35
。单击“ 保存”。
步骤 6:将数据帧保存到表
重要
若要在 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 中将数据帧的内容保存到表中。
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 目录卷的目录、架构和卷名称。 (可选)将 table_name
值替换为选择的表名称。
Python
使用 Python 从 CSV 导入数据
Scala
使用 Scala 从 CSV 导入数据
R
使用 R 从 CSV 导入数据
后续步骤
- 要了解如何从 CSV 文件将其他数据添加到现有表中,请参阅入门:引入和插入其他数据。
- 若要了解清理和增强数据,请参阅入门:增强和清理数据。