入门:从笔记本导入和可视化 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:定义变量

在此步骤中,定义要在本文中创建的示例笔记本中使用的变量。

  1. 将以下代码复制并粘贴到新的空笔记本单元格中: 将 <catalog-name><schema-name><volume-name> 替换为 Unity 目录卷的目录、架构和卷名称。 (可选)将 table_name 值替换为选择的表名称。 本文稍后会将婴儿姓名数据保存到此表中。

  2. 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 卷。

  1. 将以下代码复制并粘贴到新的空笔记本单元格中: 此代码使用 Databricks dbutuils 命令将 rows.csv 文件从 health.data.ny.gov 复制到 Unity Catalog 卷。

  2. 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 的数据帧。

  1. 将以下代码复制并粘贴到新的空笔记本单元格中: 此代码将婴儿名称数据从 CSV 文件加载到数据帧 df

  2. 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() 方法在笔记本的表中显示数据帧的内容,然后在笔记本的词云图中可视化数据。

  1. 将以下代码复制并粘贴到新的空笔记本单元中,然后单击“运行单元格”以表显示数据。

    Python

    display(df)
    

    Scala

    display(df)
    

    R

    display(df)
    
  2. 查看表中的结果。

  3. 在“”选项卡旁边,单击 +,然后单击“可视化效果”。

  4. 在可视化编辑器中,单击“可视化类型”,然后验证是否已选择“词云”。

  5. 在“词列”中,验证是否已选择 First Name

  6. 在“频率限制”中,单击 35

    词云图

  7. 单击“ 保存”。

步骤 6:将数据帧保存到表

重要

若要在 Unity Catalog 中保存数据帧,必须拥有目录和架构上的 CREATE 表权限。 有关 Unity Catalog 中的权限的信息,请参阅 Unity Catalog 中的特权和安全对象在 Unity Catalog 中管理特权

  1. 将以下代码复制并粘贴到空的笔记本单元格中。 此代码替换列名称中的空格。 列名中不允许使用特殊字符,例如空格。 此代码使用 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)
    
  2. 将以下代码复制并粘贴到空的笔记本单元格中。 此代码使用在本文开始时定义的表名变量在 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")
    
  3. 若要验证表是否已保存,请单击左侧栏中的“目录”以打开目录资源管理器 UI。 打开目录,然后打开架构以验证表是否显示。

  4. 单击表以查看“概述”选项卡上的表架构。

  5. 单击“示例数据”查看表中的 100 行数据。

导入和可视化数据笔记本

使用以下笔记本之一执行本文中的步骤。 将 <catalog-name><schema-name><volume-name> 替换为 Unity 目录卷的目录、架构和卷名称。 (可选)将 table_name 值替换为选择的表名称。

Python

使用 Python 从 CSV 导入数据

获取笔记本

Scala

使用 Scala 从 CSV 导入数据

获取笔记本

R

使用 R 从 CSV 导入数据

获取笔记本

后续步骤

其他资源