探索数据管道的源数据

创建数据管道的常见第一步是了解管道的源数据。 在此步骤中,你将在笔记本中运行 Databricks 实用工具和 PySpark 命令来检查源数据和项目。

若要详细了解探索性数据分析,请参阅 Azure Databricks 上的探索数据分析:工具和技术

创建数据探索笔记本

  1. 在边栏中单击 New Icon“新建”,然后从菜单中选择“笔记本”。 此时会打开笔记本,其中包含可替换的默认名称。

  2. 输入笔记本的名称,例如 Explore songs data。 默认情况下:

    • “Python”是选择的语言。
    • 笔记本将附加到你使用的最后一个群集。 在本例中,是你在步骤 1:创建群集中创建的群集。
  3. 若要查看包含数据集的目录的内容,请在笔记本的第一个单元格中输入以下内容,单击 Run Menu,然后选择“运行单元格”。

    %fs ls "/databricks-datasets/songs/data-001"
    
    path name 大小 modificationTime
    1 dbfs:/databricks-datasets/songs/README.md README.md 1719 1454620183000
    2 dbfs:/databricks-datasets/songs/data-001/ data-001/ 0 1672791237846
    3 dbfs:/databricks-datasets/songs/data-002/ data-002/ 0 1672791237846

浏览数据

  1. 自述文件包含有关数据集的信息,包括数据架构的说明。 引入数据时,架构信息将用于下一步。 若要查看自述文件的内容,请在单元格操作菜单中单击 Down Caret,选择“在下方添加单元格”,在新单元格中输入以下内容,单击 Run Menu,然后选择“运行单元格”。

    %fs head --maxBytes=10000 "/databricks-datasets/songs/README.md"
    
    Sample of Million Song Dataset
    ===============================
    
    ## Source
    This data is a small subset of the [Million Song Dataset](http://labrosa.ee.columbia.edu/millionsong/).
    The original data was contributed by The Echo Nest.
    Prepared by T. Bertin-Mahieux <tb2332 '@' columbia.edu>
    
    ## Attribute Information
    - artist_id:string
    - artist_latitude:double
    - artist_longitude:double
    - artist_location:string
    - artist_name:string
    - duration:double
    - end_of_fade_in:double
    - key:int
    - key_confidence:double
    - loudness:double
    - release:string
    - song_hotnes:double
    - song_id:string
    - start_of_fade_out:double
    - tempo:double
    - time_signature:double
    - time_signature_confidence:double
    - title:string
    - year:double
    - partial_sequence:int
    ...
    
  2. 此示例中使用的记录位于 /databricks-datasets/songs/data-001/ 目录中。 若要查看此目录的内容,请在单元格操作菜单中单击 Down Caret,选择“在下方添加单元格”,在新单元格中输入以下内容,单击 Run Menu,然后选择“运行单元格”。

    %fs ls "/databricks-datasets/songs/data-001"
    
    path name 大小 modificationTime
    1 dbfs:/databricks-datasets/songs/data-001/header.txt header.txt 377 1454633901000
    2 dbfs:/databricks-datasets/songs/data-001/part-00000 part-00000 52837 1454547464000
    3 dbfs:/databricks-datasets/songs/data-001/part-00001 part-00001 52469 1454547465000
  3. 由于自述文件和文件名不指示文件格式,因此可查看记录示例,来更好地了解每条记录的内容和格式。 若要读取和显示其中一个数据文件中的前 10 条记录,请在单元格操作菜单中单击 Down Caret,选择“在下方添加单元格”,在新单元格中输入以下内容,单击 Run Menu,然后选择“运行单元格”

    %fs head --maxBytes=10000 "/databricks-datasets/songs/data-001/part-00000"
    
     AR81V6H1187FB48872  nan     nan             Earl Sixteen    213.7073        0.0     11      0.419   -12.106 Soldier of Jah Army     nan     SOVNZSZ12AB018A9B8      208.289 125.882 1       0.0     Rastaman        2003    --
     ARVVZQP11E2835DBCB  nan     nan             Wavves  133.25016       0.0     0       0.282   0.596   Wavvves 0.471578247701  SOJTQHQ12A8C143C5F      128.116 89.519  1       0.0     I Want To See You (And Go To The Movies)        2009    --
     ARFG9M11187FB3BBCB  nan     nan     Nashua USA      C-Side  247.32689       0.0     9       0.612   -4.896  Santa Festival Compilation 2008 vol.1   nan     SOAJSQL12AB0180501      242.196 171.278 5       1.0     Loose on the Dancefloor 0       225261
     ...
    

    通过查看记录示例,可以观察有关数据的一些情况。 稍后在处理数据时这些观察结果将派上用场:

    • 记录不包含标头。 标头存储在同一目录中的单独文件中。
      • 文件采用制表符分隔值 (TSV) 格式显示。
      • 某些字段缺失或无效。
  4. 若要进一步探索和分析数据,可以使用这些观察结果将 TSV 格式的歌曲数据加载到 PySpark DataFrame 中。 为此,请在单元格操作菜单中单击 Down Caret,选择“在下方添加单元格”,在新单元格中输入以下代码,然后单击 Run Menu>“运行菜单”。 DataFrame 是一种分布式数据结构,可将数据组织成一个由行和列构成的二维表,提供一种灵活直观的方法来存储和处理这些数据。

    df = spark.read.format('csv').option("sep", "\t").load('dbfs:/databricks-datasets/songs/data-001/part-00000')
    df.display()
    

    由于数据文件缺少标头,因此列名显示为 _c0_c1 等。 无论实际数据类型如何,每个列都解释为 string下一步中的原始数据引入显示了一个示例,该示例演示如何在加载数据时强制实施有效架构。

    DataFrame created from raw songs data