チュートリアル: Azure Cosmos DB エンドポイントを使用して Azure Databricks を構築する

このチュートリアルでは、Azure Cosmos DB に対して有効なサービス エンドポイントを使用して、VNet インジェクションされた Databricks 環境を構築する方法について説明します。

このチュートリアルで学習する内容は次のとおりです。

  • 仮想ネットワーク内に Azure Databricks ワークスペースを作成する
  • Azure Cosmos DB サービス エンドポイントを作成する
  • Azure Cosmos DB アカウントを作成してデータをインポートする
  • Azure Databricks クラスターを作成する
  • Azure Databricks ノートブックから Azure Cosmos DB にクエリを実行する

前提条件

開始する前に、以下を行います。

Azure Cosmos DB サービス エンドポイントを作成する

  1. Azure Databricks ワークスペースを仮想ネットワークにデプロイしたら、Azure portal でその仮想ネットワークに移動します。 Databricks のデプロイを通じて作成されたパブリックおよびプライベート サブネットに注目してください。

  2. public-subnet を選択し、Azure Cosmos DB サービス エンドポイントを作成します。 その後、 [保存] を選択します。

    Cosmos DB サービス エンドポイントの追加

Azure Cosmos DB アカウントを作成する

  1. Azure Portal を開きます。 画面の左上で、[リソースの作成]> > [データベース]> > [Azure Cosmos DB] の順に選択します。

  2. [基本] タブの [インスタンスの詳細] に次の設定を入力します。

    Setting
    サブスクリプション 該当するサブスクリプション
    リソース グループ <該当するリソース グループ>
    アカウント名 db-vnet-service-endpoint
    API コア (SQL)
    Location 米国西部
    geo 冗長性 Disable
    マルチリージョン書き込み 有効化

    Cosmos DB の基本アカウント情報を追加する

  3. [ネットワーク] タブを選択し、仮想ネットワークを構成します。

    a. 前提条件として作成した仮想ネットワークを選択し、public-subnet を選択します。 private-subnet には "Microsoft AzureCosmosDB のエンドポイントが存在しません" というメッセージが表示されていることに注意してください。 これは、public-subnet のみで Azure Cosmos DB サービス エンドポイントを有効にしたためです。

    b. [Azure portal からのアクセスを許可する] が有効になっていることを確認します。 この設定により、Azure portal から Azure Cosmos DB アカウントにアクセスできるようになります。 このオプションが [拒否] に設定されている場合は、ご利用のアカウントにアクセスしようとしたときにエラーが発生します。

    注意

    このチュートリアルでは必要ありませんが、ローカル コンピューターから Azure Cosmos DB アカウントにアクセスできるようにしたい場合は、[自分の IP からのアクセスを許可する] を有効にすることもできます。 たとえば、Azure Cosmos DB SDK を使用してご利用のアカウントに接続する場合は、この設定を有効にする必要があります。 これが無効になっていると、"アクセスが拒否されました" エラーが発生します。

    Cosmos DB アカウントのネットワーク設定

  4. [確認と作成] を選択した後、[作成] を選択して仮想ネットワーク内に Azure Cosmos DB アカウントを作成します。

  5. Azure Cosmos DB アカウントが作成されたら、[設定][キー] に移動します。 プライマリ接続文字列をコピーし、後で使用できるようテキスト エディターに保存します。

    Cosmos DB アカウントの [キー] ページ

  6. [データ エクスプローラー][新しいコンテナー] を選択して、ご利用の Azure Cosmos DB アカウントに新しいデータベースとコンテナーを追加します。

    Cosmos DB の新しいコレクション

Azure Cosmos DB にデータをアップロードする

  1. Azure Cosmos DB のデータ移行ツールのグラフィカル インターフェイス バージョン (Dtui.exe) を開きます。

    Cosmos DB データ移行ツール

  2. [ソース情報] タブで、 [インポート元] ドロップダウンから [CSV ファイル] を選択します。 次に、 [ファイルの追加] を選択し、前提条件としてダウンロードした暴風雨データの CSV を追加します。

    Cosmos DB データ移行ツールのソース情報

  3. [ターゲット情報] タブで、実際の接続文字列を入力します。 接続文字列の形式は AccountEndpoint=<URL>;AccountKey=<key>;Database=<database> です。 前のセクションで保存したプライマリ接続文字列には AccountEndpoint と AccountKey が含まれています。 接続文字列の末尾に Database=<your database name> を追加して、 [確認] を選択します。 次に、コンテナー名とパーティション キーを追加します。

    Cosmos DB データ移行ツールのターゲット情報

  4. 概要ページが表示されるまで [次へ] を選択します。 その後、 [インポート] を選択します。

クラスターを作成してライブラリを追加する

  1. Azure portal で Azure Databricks サービスに移動し、 [ワークスペースの起動] を選択します。

  2. 新しいクラスターを作成します。 クラスター名を選択し、それ以外は既定の設定のままにしてください。

    新しいクラスターの設定

  3. クラスターの作成後、そのクラスターのページに移動し、 [ライブラリ] タブを選択します。 [新規インストール] を選択し、Spark コネクタの jar ファイルをアップロードしてライブラリをインストールします。

    Spark コネクタ ライブラリのインストール

    ライブラリがインストールされたことは、 [ライブラリ] タブで確認できます。

    Databricks クラスターの [ライブラリ] タブ

Databricks ノートブックから Azure Cosmos DB にクエリを実行する

  1. Azure Databricks ワークスペースに移動して新しい Python ノートブックを作成します。

    新しい Databricks ノートブックの作成

  2. 次の Python コードを実行して Azure Cosmos DB の接続構成を設定します。 EndpointMasterkeyDatabaseContainer を適宜変更します。

    connectionConfig = {
      "Endpoint" : "https://<your Azure Cosmos DB account name.documents.azure.com:443/",
      "Masterkey" : "<your Azure Cosmos DB primary key>",
      "Database" : "<your database name>",
      "preferredRegions" : "West US 2",
      "Container": "<your container name>",
      "schema_samplesize" : "1000",
      "query_pagesize" : "200000",
      "query_custom" : "SELECT * FROM c"
    }
    
  3. 次の Python コードを使用してデータを読み込み、一時ビューを作成します。

    users = spark.read.format("com.microsoft.azure.cosmosdb.spark").options(**connectionConfig).load()
    users.createOrReplaceTempView("storm")
    
  4. 次のマジック コマンドを使用して、データが返される SQL ステートメントを実行します。

    %sql
    select * from storm
    

    VNet インジェクションされた Databricks ワークスペースを、サービス エンドポイントに対応した Azure Cosmos DB リソースに正常に接続することができました。 Azure Cosmos DB への接続方法の詳細については、Azure Cosmos DB Connector for Apache Spark に関するページを参照してください。

リソースのクリーンアップ

リソース グループ、Azure Databricks ワークスペース、および関連するすべてのリソースは、不要になったら削除します。 ジョブを削除すると、不必要な課金を回避できます。 Azure Databricks ワークスペースを後で使用する予定がある場合は、クラスターを停止し、後で再起動することができます。 この Azure Databricks ワークスペースの使用を続けない場合は、以下の手順に従って、このチュートリアルで作成したすべてのリソースを削除してください。

  1. Azure Portal の左側のメニューで、 [リソース グループ] をクリックしてから、作成したリソース グループの名前をクリックします。

  2. リソース グループのページで [削除] を選択し、削除するリソースの名前をテキスト ボックスに入力してから [削除] を再度選択します。

次の手順

このチュートリアルでは、仮想ネットワークに Azure Databricks ワークスペースをデプロイし、Azure Cosmos DB Spark コネクタを使用して Databricks から Azure Cosmos DB データにクエリを実行しました。 仮想ネットワークでの Azure Databricks の操作の詳細については、Azure Databricks での SQL Server の使用に関するチュートリアルに進んでください。