入门:从笔记本导入和可视化 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 管理员。
提示
有关本文的已完成笔记本,请参阅导入和可视化数据笔记本。
若要在工作区中创建笔记本,请单击边栏中的“ 新建”,然后单击“笔记本”。 将在工作区中打开一个空白笔记本。
若要了解有关创建和管理笔记本的详细信息,请参阅管理笔记本。
在此步骤中,定义要在本文中创建的示例笔记本中使用的变量。
将以下代码复制并粘贴到新的空笔记本单元格中: 将
<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
在此步骤中,将包含婴儿姓名数据的 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 = ""))
在此步骤中,通过使用 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 = ",")
可以从许多受支持的文件格式加载数据。
在此步骤中,使用 display()
方法在笔记本的表中显示数据帧的内容,然后在笔记本的词云图中可视化数据。
将以下代码复制并粘贴到新的空笔记本单元中,然后单击“运行单元格”以表显示数据。
Python
display(df)
Scala
display(df)
R
display(df)
查看表中的结果。
在“表”选项卡旁边,单击 +,然后单击“可视化效果”。
在可视化编辑器中,单击“可视化类型”,然后验证是否已选择“词云”。
在“词列”中,验证是否已选择
First Name
。在“频率限制”中,单击
35
。单击“ 保存”。
重要
若要在 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
值替换为选择的表名称。
- 要了解如何从 CSV 文件将其他数据添加到现有表中,请参阅入门:引入和插入其他数据。
- 若要了解清理和增强数据,请参阅入门:增强和清理数据。