Python または R から Azure Databricks に接続する

この記事では、Databricks ODBC ドライバーを使用して、Python または R 言語で Azure Databricks に接続する方法を説明します。 接続が確立されると、Python または R クライアントから Azure Databricks にアクセスできるようになります。 クライアントを使用して、データをさらに分析することもできます。

前提条件

  • Azure Databricks ワークスペース、Spark クラスター、クラスターに関連付けられたサンプル データが必要です。 これらの前提条件がまだ揃っていない場合は、概要のクイックスタートを完了してください。

  • Databricks ODBC ドライバーを Databricks ドライバー ダウンロード ページからダウンロードします。 64 ビット バージョンのドライバーをインストールします。

  • Databricks に個人用アクセス トークンを設定します。 手順については、トークンの管理に関するページをご覧ください。

DSN のセットアップ

データ ソース名 (DSN) には特定のデータ ソースの情報が含まれます。 ODBC ドライバーはデータ ソースに接続するためにこの DSN が必要です。 このセクションでは、Databricks ODBC ドライバーで、Python または R などのクライアントから Azure Databricks に接続する際に使用できるDSN を設定します。

  1. Azure Databricks ワークスペースから Databricks クラスターに移動します。

    Open Databricks cluster

  2. [構成] タブの下で、 [JDBC/ODBC](JDBC/ODBC) タブをクリックし、 [Server Hostname](サーバー ホスト名)[HTTP Path](HTTP パス) の値をコピーします。 この記事の手順を完了するにはこれらの値が必要です。

    Get Databricks configuration

  3. 自分のコンピューターで、64 ビットの [ODBC データ ソース] アプリケーションを起動します。

    Launch ODBC Data Sources app

  4. [ユーザー DSN] タブの [追加] をクリックします。 [新規データ ソースの作成] ダイアログ ボックスで、 [Simba Spark ODBC Driver](Simba Spark ODBC ドライバー) を選択し、 [完了] をクリックします。

    Add ODBC data source

  5. [Simba Spark ODBC Driver](Simba Spark ODBC ドライバー) ダイアログ ボックスに次の値を入力します。

    Configure DSN

    次の表に、このダイアログ ボックスに指定する値に関する情報を示します。

    フィールド
    データ ソース名 データ ソースの名前を指定します。
    ホスト Databricks ワークスペースの [Server hostname](サーバー ホスト名) からコピーした値を指定します。
    ポート 443」を入力します。
    認証>機構 [ユーザー名とパスワード] を選択します。
    ユーザー名 token」を入力します。
    パスワード Databricks ワークスペースからコピーしたトークン値を入力します。

    DSN 設定ダイアログ ボックスでさらに次の手順を実行します。

    • [HTTP Options](HTTP オプション) をクリックします。 ダイアログ ボックスが開いたら、Databricks ワークスペースからコピーした [HTTP Path](HTTP パス) の値を貼り付けます。 Click OK.
    • [SSL Options](SSL オプション) をクリックします。 ダイアログ ボックスが開いたら、 [SSL を有効にする] チェック ボックスをオンにします。 Click OK.
    • [テスト] をクリックして Azure Databricks への接続をテストします。 [OK] をクリックして構成を保存します。
    • [ODBC データ ソース アドミニストレーター] ダイアログ ボックスで [OK] をクリックします。

これで、使用する DSN が設定されました。 次のセクションでは、この DSN を使用して、Python または R から Azure Databricks に接続します。

R からの接続

注意

このセクションでは、デスクトップ上で稼働している R Studio クライアントを Azure Databricks に統合する方法について説明します。 Azure Databricks クラスター自体の上で R Studio を使用する方法については、「R Studio on Azure Databricks」(Azure Databricks 上での R Studio) を参照してください。

このセクションでは、R 言語 IDE を使用して Azure Databricks にあるデータを参照します。 開始する前に、ご使用のコンピューターに以下がインストールされている必要があります。

  • R 言語の IDE。 この記事では、RStudio for Desktop を使用します。 これは R Studio ダウンロードからインストールできます。
  • IDE として RStudio for Desktop を使用する場合は、https://aka.ms/rclient/ から Microsoft R Client もインストールしてください。

RStudio を開き、次の手順を実行します。

  • RODBC パッケージを参照します。 これにより、前に作成した DSN を使用して Azure Databricks に接続できます。
  • DSN を使用して接続を確立します。
  • Azure Databricks のデータに対して SQL クエリを実行します。 次のスニペットで、radio_sample_data は Azure Databricks に既に存在しているテーブルです。
  • クエリに対して何らかの操作を実行して出力を確認します。

次のコード スニペットはこれらのタスクを実行します。

# reference the 'RODBC' package
require(RODBC)

# establish a connection using the DSN you created earlier
conn <- odbcConnect("<ENTER DSN NAME HERE>")

# run a SQL query using the connection you created
res <- sqlQuery(conn, "SELECT * FROM radio_sample_data")

# print out the column names in the query output
names(res)

# print out the number of rows in the query output
nrow (res)

Python からの接続

このセクションでは、Python IDE (IDLE など) を使用して Azure Databricks にあるデータを参照します。 開始する前に、次の前提条件を完了しておく必要があります。

  • Python をここからインストールします。 このリンクから Python をインストールすると IDLE もインストールされます。

  • コンピューターのコマンド プロンプトで pyodbc パッケージをインストールします。 次のコマンドを実行します。

    pip install pyodbc
    

IDLE を開き、次の手順を実行します。

  • pyodbc パッケージをインポートします。 これにより、前に作成した DSN を使用して Azure Databricks に接続できます。
  • 前に作成した DSN を使用して接続を確立します。
  • 作成した接続を使用して SQL クエリを実行します。 次のスニペットで、radio_sample_data は Azure Databricks に既に存在しているテーブルです。
  • クエリに対して操作を実行して出力を確認します。

次のコード スニペットはこれらのタスクを実行します。

# import the `pyodbc` package:
import pyodbc

# establish a connection using the DSN you created earlier
conn = pyodbc.connect("DSN=<ENTER DSN NAME HERE>", autocommit=True)

# run a SQL query using the connection you created
cursor = conn.cursor()
cursor.execute("SELECT * FROM radio_sample_data")

# print the rows retrieved by the query.
for row in cursor.fetchall():
    print(row)

次の手順