データ パイプラインのソース データを探索する

データ パイプラインを作成する際の一般的な最初の手順は、パイプラインのソース データを理解することです。 この手順では、ノートブックで Databricks ユーティリティ コマンドを実行して、ソース データと成果物を調べます。

探索的データ分析の詳細については、「Azure Databricks の探索的データ分析: ツールと手法」 を参照してください。

Video: Databricks ノートブックの概要

Databricks ノートブックの概要については、次のビデオをご覧ください。

データ探索ノートブックを作成する

  1. サイドバーで、[新規] アイコン[新規] をクリックし、メニューから [ノートブック] を選択します。 ノートブックが開き、置き換えることができる既定の名前が表示されます。

  2. ノートブックの名前を入力します (例: Explore songs data)。 既定での動作は次のとおりです。

    • 選択された言語は Python です。
    • ノートブックは、最後に使用したクラスターにアタッチされます。 この場合、「手順 1: クラスターを作成する」で作成したクラスターです。
  3. データセットを含むディレクトリの内容を表示するには、ノートブックの最初のセルに次のように入力し、[実行メニュー] をクリックして、[セルの実行] を選びます。

    %fs ls "/databricks-datasets/songs/data-001"
    
    path name size 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. README ファイルには、データ スキーマの説明など、データセットに関する情報が含まれています。 スキーマ情報は、次の手順でデータを取り込むときに使用されます。 README の内容を表示するには、セルの操作メニューで [下キャレット] をクリックし、[下にセルを追加] を選び、新しいセルに次のように入力して、[実行メニュー] をクリックし、[セルの実行] を選びます。

    %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/ ディレクトリにあります。 このディレクトリの内容を表示するには、セルの操作メニューで [下キャレット] をクリックし、[下にセルを追加] を選び、新しいセルに次のように入力して、[実行メニュー] をクリックし、[セルの実行] を選びます。

    %fs ls "/databricks-datasets/songs/data-001"
    
    path name size 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. README とファイル名はファイル形式を示していないため、各レコードの内容と形式をよりよく理解するために、レコードのサンプルを表示できます。 いずれかのデータファイルの最初の 10 レコードを読み取って表示するには、セルの操作メニューで [ダウンキャレット] をクリックし、[下にセルを追加] を選び、新しいセルに次のように入力して、[実行メニュー] をクリックし、[セルの実行] を選びます。

    %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 に読み込みます。 これを行うには、セルの操作メニューで [ダウンキャレット] をクリックし、[下にセルを追加] を選び、新しいセルに次のように入力して、実行メニュー>セルの実行 をクリックします。

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

    データ ファイルにヘッダーがないため、列名は _c0_c1 のように表示されます。 各列は、実際のデータ型に関係なく string として解釈されます。 次の手順 の生データの取り込みでは、データを読み込むときに有効なスキーマを適用する方法の例を示します。

    生の曲データから作成された DataFrame