次の方法で共有


Azure Databricks の RStudio

R の一般的な統合開発環境 (IDE) である RStudio を使用して、Azure Databricks ワークスペース内の Azure Databricks コンピューティング リソースに接続できます。 RStudio Desktop を使用して、ローカル開発マシンから Azure Databricks クラスター または SQL ウェアハウス に接続します。 Web ブラウザーを使用して Azure Databricks ワークスペースにサインインし、そのワークスペース内に RStudio Server がインストールされている Azure Databricks クラスターに接続することもできます。

RStudio Desktop を使用して接続する

RStudio Desktop を使用して、ローカル開発マシンからリモートの Azure Databricks クラスターまたは SQL ウェアハウスに接続します。 このシナリオで接続するには、ODBC 接続を使用し、R の ODBC パッケージ関数を呼び出します。これについては、このセクションで説明します。

注意

この RStudio Desktop シナリオでは、Databricks Connect も使用しない限り、SparkRsparklyr などのパッケージを使用することはできません。 RStudio Desktop を使用する代わりに、Web ブラウザーを使用して Azure Databricks ワークスペースにサインインし、そのワークスペース内に RStudio Server がインストールされている Azure Databricks クラスターに接続することもできます。

ローカル開発マシンで RStudio Desktop を設定するには:

  1. R 3.3.0 以降をダウンロードしてインストールします
  2. RStudio Desktop をダウンロードしてインストールします
  3. RStudio Desktop を開始します。

(省略可能) RStudio プロジェクトを作成するには:

  1. RStudio Desktop を開始します。
  2. [新しいプロジェクト]> をクリックします。
  3. [新しいディレクトリ > の新しいプロジェクト] を選択します。
  4. プロジェクトの新しいディレクトリを選択し、[プロジェクトの作成]をクリックします。

R スクリプトを作成するには:

  1. プロジェクトが開いている状態で、[ファイル]> の新しいファイル >[R スクリプト] をクリックします。
  2. [ファイルに名前を>付けて保存] をクリックします。
  3. ファイルに名前を付けて、[保存] をクリックします。

ODBC for R を使用してリモートの Azure Databricks クラスターまたは SQL ウェアハウスに接続するには:

  1. リモート クラスターまたは SQL ウェアハウスサーバーホスト名ポートおよび HTTP パスの値を取得します。 クラスターの場合、これらの値は[詳細] オプション[JDBC/ODBC] タブにあります。 SQL ウェアハウスの場合、これらの値は [接続の詳細] タブにあります。

  2. Azure Databricks 個人用アクセス トークンを取得します。

    注意

    セキュリティのベスト プラクティスとして、自動化ツール、システム、スクリプト、アプリを使用して認証する場合、Databricks では、ワークスペース ユーザーではなくサービス プリンシパルに属する個人用アクセス トークンを使用することを推奨しています。 サービス プリンシパルのトークンを作成するには、「サービス プリンシパルのトークンを管理する」をご覧ください。

  3. ローカル コンピューターのオペレーティング システムに基づいて、 WindowsmacOS、または Linux 用の Databricks ODBC ドライバーをインストールして構成します。

  4. ローカル コンピューターのオペレーティング システムに基づいて、 WindowsmacOSまたは Linux 用のリモート クラスターまたは SQL ウェアハウスに ODBC データ ソース名 (DSN) を設定します。

  5. RStudio コンソール ([View] > [Console] にフォーカスする) で、CRAN から odbc パッケージと DBI パッケージをインストールします。

    require(devtools)
    
    install_version(
      package = "odbc",
      repos   = "http://cran.us.r-project.org"
    )
    
    install_version(
      package = "DBI",
      repos   = "http://cran.us.r-project.org"
    )
    
  6. R スクリプトに戻り (View > Move Focus to Source)、インストール済みの odbc および DBI パッケージをロードします。

    library(odbc)
    library(DBI)
    
  7. パッケージ内の dbConnectDBI 関数の ODBC バージョンを呼び出し、odbc パッケージ内の odbc ドライバーと、作成した Databricks の ODBC DSN (ODBC DSN の ODBC DSN など) を指定します。

    conn = dbConnect(
      drv = odbc(),
      dsn = "Databricks"
    )
    
  8. ODBC DSN を介して操作を呼び出します。たとえば、SELECT パッケージ内の dbGetQuery 関数を介して DBI ステートメントを呼び出し、接続変数の名前と SELECT ステートメント自体を指定します。たとえば、次の diamonds 名前のスキーマ (データベース) で default と名前が付けられたテーブルから呼び出します。

    print(dbGetQuery(conn, "SELECT * FROM default.diamonds LIMIT 2"))
    

完全な R スクリプトは次のとおりです。

library(odbc)
library(DBI)

conn = dbConnect(
  drv = odbc(),
  dsn = "Databricks"
)

print(dbGetQuery(conn, "SELECT * FROM default.diamonds LIMIT 2"))

スクリプトを実行するには、ソース ビューで [ソース] をクリックします。 上記の R スクリプトの結果は次のとおりです。

  _c0 carat     cut color clarity depth table price    x    y    z
1   1  0.23   Ideal     E     SI2  61.5    55   326 3.95 3.98 2.43
2   2  0.21 Premium     E     SI1  59.8    61   326 3.89 3.84 2.31

RStudio Server を使用して接続する

Web ブラウザーを使用して Azure Databricks ワークスペースにサインインし、そのワークスペース内に RStudio Server がインストールされている Azure Databricks クラスターに接続します。

注意

RStudio Server の代わりに、RStudio Desktop を使用して、ローカル開発マシンから Azure Databricks クラスターまたは SQL ウェアハウスに ODBC 接続を介して接続し、R の ODBC パッケージ関数を呼び出すことができます。Databricks Connect も使用しない限り、RStudio Desktop シナリオでは SparkR sparklyr などのパッケージを使用できません。

RStudio Server の場合は、Azure Databricks のオープン ソース エディションまたは RStudio Workbench (以前の RStudio Server Pro) エディションを使用できます。 RStudio Workbench / RStudio Server Pro を使用する場合は、既存の RStudio Workbench / RStudio Server Pro ライセンスを Azure Databricks に転送する必要があります (概要:RStudio Workbench を参照してください)。

Databricks では、クラスターの開始時刻を短縮するために、RStudio Server を使用した Azure Databricks クラスターで Databricks Runtime for Machine Learning (Databricks Runtime ML) を使用することをお勧めします。 Databricks Runtime ML には、RStudio Server オープン ソース エディション パッケージの変更されていないバージョンが含まれており、そのソース コードは GitHub にあります。 次の表に、現在 Databricks Runtime for ML の各バージョンにプレインストールされている RStudio Server Open Source Edition のバージョンを示します。

Databricks Runtime for ML のバージョン RStudio Server のバージョン
Databricks Runtime 9.1 LTS ML と 10.4 LTS ML 1.4

RStudio 統合アーキテクチャ

Azure Databricks で RStudio Server を使用すると、RStudio Server のデーモンが Azure Databricks クラスターのドライバー ノードで実行されます。 RStudio web UI は Azure Databricks webapp を介してプロキシ化されます。これは、クラスター ネットワーク構成を変更する必要がないことを意味します。 次の図は、RStudio 統合コンポーネント アーキテクチャを示しています。

Databricks の RStudio のアーキテクチャ

警告

Azure Databricks によって、クラスターの Spark ドライバーのポート 8787 から RStudio Web サービスがプロキシされます。 この Web プロキシは、RStudio だけでの使用を意図しています。 他の Web サービスをポート 8787 で起動すると、ユーザーを潜在的なセキュリティ攻撃にさらす可能性があります。 Databricks もマイクロソフトも、サポートされていないソフトウェアをクラスターにインストールした結果、発生する問題については一切責任を負いません。

必要条件

  • クラスターは汎用クラスターである必要があります。

  • そのクラスターのアタッチ可能アクセス許可が必要です。 クラスター管理者は、このアクセス許可を付与できます。 「コンピューティングのアクセス許可」を参照してください。

  • クラスターで、テーブルのアクセス制御自動終了、または資格情報のパススルーが有効になっていない必要があります。

  • クラスターでは、共有 アクセス モードを使用 "しないでください"。

  • クラスター が Spark 構成 spark.databricks.pyspark.enableProcessIsolationtrue に セットすることはできません。

  • Pro エディションを使用する場合は、RStudio Server のフローティング Pro ライセンスが必要です。

Note

クラスターでは Unity カタログをサポートする アクセス モード を使用できますが、そのクラスターの RStudio Server を使用して Unity カタログ内のデータにアクセスすることはできません。

概要: RStudio Server OS Edition

RStudio Server Open Source Edition は、Databricks Runtime for Machine Learning (Databricks Runtime ML) を使用する Azure Databricks クラスターにプレインストールされています。

クラスターで RStudio Server OS Edition を開くには、次の操作を行います。

  1. クラスターの詳細ページを開きます。

  2. クラスターを起動してから [アプリ] タブをクリックします。

    クラスターの [アプリ] タブ

  3. [アプリ] タブで、[RStudio の設定] ボタンをクリックします。 これにより、ワンタイム パスワードが生成されます。 [表示] リンクをクリックして表示し、パスワードをコピーします。

    RStudio のワンタイム パスワード

  4. [RStudio UI を開く] リンクをクリックして、新しいタブで UI を開きます。ログイン フォームにユーザー名とパスワードを入力し、サインインします。

    RStudio のログイン フォーム

  5. RStudio UI から、SparkR パッケージをインポートし、SparkR セッションを設定して、クラスターで Spark ジョブが起動されるようにすることができます。

    library(SparkR)
    
    sparkR.session()
    
    # Query the first two rows of a table named "diamonds" in a
    # schema (database) named "default" and display the query result.
    df <- SparkR::sql("SELECT * FROM default.diamonds LIMIT 2")
    showDF(df)
    

    RStudio Open Source Edition セッション

  6. sparklyr パッケージをアタッチして、Spark 接続を設定することもできます。

    library(sparklyr)
    
    sc <- spark_connect(method = "databricks")
    
    # Query a table named "diamonds" and display the first two rows.
    df <- spark_read_table(sc = sc, name = "diamonds")
    print(x = df, n = 2)
    

    RStudio Open Source Edition の sparklyr 接続

概要: RStudio Workbench

このセクションでは、Azure Databricks クラスターで RStudio Workbench (旧称 RStudio Server Pro) を設定して使用を開始する方法について説明します。 ライセンスによっては、RStudio Workbench に RStudio Server Pro が含まれる場合があります。

RStudio ライセンス サーバーの設定

Azure Databricks で RStudio Workbench を使用するには、Pro ライセンスをフローティング ライセンスに変換する必要があります。 詳細については、help@rstudio.com にお問い合わせください。 ライセンスが変換されたら、RStudio Workbench 用にライセンス サーバーを設定する必要があります。

ライセンス サーバーを設定するには、次の操作を実行します。

  1. クラウド プロバイダー ネットワークで小規模なインスタンスを起動します。ライセンス サーバー デーモンは、非常に軽量です。
  2. 対応するバージョンの RStudio License Server をインスタンスにダウンロードしてインストールし、サービスを開始します。 詳細な手順については、RStudio Workbench の管理ガイドを参照してください。
  3. Azure Databricks インスタンスに対してライセンス サーバー ポートが開いていることを確認します。

RStudio Workbench をインストールする

Azure Databricks クラスターで RStudio Workbench を設定するには、init スクリプトを作成して RStudio Workbench のバイナリ パッケージをインストールし、それをライセンス リース用のライセンス サーバーを使用するように構成する必要があります。

Note

RStudio Server Open Source Edition パッケージが既に含まれている Databricks Runtime バージョンに RStudio Workbench をインストールする予定の場合は、インストールを成功させるために、そのパッケージをまずアンインストールする必要があります。

次に示す .sh ファイルの例は、init スクリプトとして、ホーム ディレクトリ (ワークスペース ファイルとして)、Unity Catalog ボリューム、オブジェクト ストレージなどの場所に格納できます。 詳しくは、「クラスター スコープの init スクリプトを使用する」をご覧ください。 このスクリプトは、Azure Databricks との統合を効率化する追加の認証構成も実行します。

警告

DBFS のクラスター スコープの init スクリプトはサポートが終了しました。 一部のワークスペースで従来のワークロードをサポートするために行われている DBFS への init スクリプトの格納は、推奨されません。 DBFS に格納されているすべての init スクリプトを移行する必要があります。 移行手順については、「DBFS から init スクリプトを移行する」を参照してください。

#!/bin/bash

set -euxo pipefail

if [[ $DB_IS_DRIVER = "TRUE" ]]; then
  sudo apt-get update
  sudo dpkg --purge rstudio-server # in case open source version is installed.
  sudo apt-get install -y gdebi-core alien

  ## Installing RStudio Workbench
  cd /tmp

  # You can find new releases at https://rstudio.com/products/rstudio/download-commercial/debian-ubuntu/.
  wget https://download2.rstudio.org/server/bionic/amd64/rstudio-workbench-2022.02.1-461.pro1-amd64.deb -O rstudio-workbench.deb
  sudo gdebi -n rstudio-workbench.deb

  ## Configuring authentication
  sudo echo 'auth-proxy=1' >> /etc/rstudio/rserver.conf
  sudo echo 'auth-proxy-user-header-rewrite=^(.*)$ $1' >> /etc/rstudio/rserver.conf
  sudo echo 'auth-proxy-sign-in-url=<domain>/login.html' >> /etc/rstudio/rserver.conf
  sudo echo 'admin-enabled=1' >> /etc/rstudio/rserver.conf
  sudo echo 'export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin' >> /etc/rstudio/rsession-profile

  # Enabling floating license
  sudo echo 'server-license-type=remote' >> /etc/rstudio/rserver.conf

  # Session configurations
  sudo echo 'session-rprofile-on-resume-default=1' >> /etc/rstudio/rsession.conf
  sudo echo 'allow-terminal-websockets=0' >> /etc/rstudio/rsession.conf

  sudo rstudio-server license-manager license-server <license-server-url>
  sudo rstudio-server restart || true
fi
  1. <domain> を Azure Databricks URL、<license-server-url> をフローティング ライセンス サーバーの URL に置き換えます。
  2. この .sh ファイルを、init スクリプトとして、ホーム ディレクトリ (ワークスペース ファイルとして)、Unity Catalog ボリューム、オブジェクト ストレージなどの場所に格納します。 詳しくは、「クラスター スコープの init スクリプトを使用する」をご覧ください。
  3. クラスターを起動する前に、この .sh ファイルを関連付けられている場所から init スクリプトとして追加します。 手順については、「クラスター スコープの init スクリプトを使用する」をご覧ください。
  4. クラスターを起動します。

RStudio Server Pro を使用する

  1. クラスターの詳細ページを開きます。

  2. クラスターを起動し、[アプリ] タブをクリックします。

    クラスターの [アプリ] タブ

  3. [アプリ] タブで、[RStudio の設定] ボタンをクリックします。

    RStudio のワンタイム パスワード

  4. ワンタイム パスワードは必要ありません。 [RStudio UI を開く] リンクをクリックすると、認証済みの RStudio Pro セッションが開きます。

  5. RStudio UI から、SparkR パッケージをアタッチし、クラスターで Spark ジョブを起動するように SparkR セッションを設定することができます。

    library(SparkR)
    
    sparkR.session()
    
    # Query the first two rows of a table named "diamonds" in a
    # schema (database) named "default" and display the query result.
    df <- SparkR::sql("SELECT * FROM default.diamonds LIMIT 2")
    showDF(df)
    

    RStudio Pro セッション

  6. sparklyr パッケージをアタッチして、Spark 接続を設定することもできます。

    library(sparklyr)
    
    sc <- spark_connect(method = "databricks")
    
    # Query a table named "diamonds" and display the first two rows.
    df <- spark_read_table(sc = sc, name = "diamonds")
    print(x = df, n = 2)
    

    RStudio Pro の sparklyr 接続

RStudio Server FAQ

RStudio Server Open Source Edition と RStudio Workbench の違いは何ですか?

RStudio Workbench は、Open Source エディションでは利用できない幅広いエンタープライズ機能をサポートしています。 機能の比較については、RStudio の Web サイトを参照してください。

さらに、RStudio Server Open Source Edition は、GNU Affero General Public License (AGPL) の下で配布されます。一方、Pro バージョンには、AGPL ソフトウェアを使用できない組織のための商用ライセンスが付属しています。

最後に、RStudio Workbench には RStudio、PBC からの professional および enterprise のサポートが付属していますが、RStudio Server Open Source Edition にはサポートがありません。

Azure Databricks で手持ちの RStudio Workbench または RStudio Server Pro のライセンスを使用できますか。

はい。RStudio Server の Pro または Enterprise ライセンスを既にお持ちの場合は、Azure Databricks でそのライセンスを使用できます。 Azure Databricks で RStudio Workbench を設定する方法については、概要:RStudio Workbench のを参照してください。

RStudio Server はどこで実行されるのですか。 追加のサービス/サーバーを管理する必要がありますか。

RStudio 統合アーキテクチャの図からわかるように、RStudio Server のデーモンは、Azure Databricks クラスターのドライバー (マスター) ノードで実行されます。 RStudio Server Open Source Edition を使用する場合、追加のサーバー/サービスを実行する必要はありません。 ただし、RStudio Workbench の場合は、RStudio ライセンス サーバーを実行する別のインスタンスを管理する必要があります。

標準的なクラスターで RStudio Server を使用できますか。

注意

この記事では、従来のクラスター UI について説明します。 クラスター アクセス モードの用語の変更など、新しいクラスター UI (プレビュー段階) の詳細については、「コンピューティング構成リファレンス」を参照してください。 新しいクラスターと従来のクラスターの種類の比較については、「クラスター UI の変更とクラスター アクセス モード」を参照してください。

はい、できます。

自動終了のあるクラスターで RStudio Server を使用できますか。

いいえ。自動終了が有効になっている場合、RStudio は使用できません。 自動終了では、RStudio セッション内の保存されていないユーザー スクリプトとデータが消去される可能性があります。 このような意図しないデータ消失シナリオからユーザーを保護するために、このようなクラスターでは、既定で、RStudio が無効になっています。

使用されていないときにクラスター リソースをクリーンアップする必要があるお客様向けに、Databricks では クラスター API を使用して、スケジュールに基づいて RStudio クラスターをクリーンアップすることが推奨されています。

RStudio で作業を永続化するにはどうすればよいですか。

RStudio のバージョン管理システムを使用して作業を永続化することを強くお勧めします。 RStudio では、さまざまなバージョン管理システムがサポートされており、チェックインしてプロジェクトを管理することができます。 以下のいずれかの方法でコードを永続化しないと、ワークスペース管理者がクラスターを再起動または終了した場合に作業内容が失われるリスクがあります。

1 つは、「DBFS とは」でファイル (コードまたはデータ) を保存する方法です。 たとえば、/dbfs/ の下にファイルを保存した場合、クラスターを終了または再起動しても、ファイルは削除されません。

もう 1 つの方法は、Rmarkdown としてエクスポートし、後で RStudio インスタンスにファイルをインポートして、ローカル ファイル システムに R ノートブックを保存することです。 RMarkdown を使用して R ノートブックを共有する方法に関するブログでは、手順の詳細について説明しています。

SparkR セッションを開始するには、どうすればよいですか。

SparkR は Databricks Runtime に含まれていますが、RStudio に読み込む必要があります。 RStudio 内で次のコードを実行して、SparkR セッションを初期化します。

library(SparkR)

sparkR.session()

SparkR パッケージのインポート中にエラーが発生した場合は、.libPaths() を実行し、結果に /home/ubuntu/databricks/spark/R/lib が含まれていることを確認します。

含まれていない場合は、/usr/lib/R/etc/Rprofile.site の内容を確認します。 SparkR パッケージがインストールされていることを確認するために、ドライバー上で /home/ubuntu/databricks/spark/R/lib/SparkR を一覧表示します。

sparklyr セッションを開始するには、どうすればよいですか。

sparklyr パッケージがクラスターにインストールされている必要があります。 次のいずれかの方法で sparklyr パッケージをインストールします。

  • Azure Databricks ライブラリとして
  • install.packages() コマンド
  • RStudio パッケージ管理 UI
library(sparklyr)

sc <- spark_connect(method = “databricks”)

RStudio を Azure Databricks R ノートブックと統合するにはどうすればよいですか。

バージョン管理を使用して、ノートブックと RStudio の間で作業を移動できます。

作業ディレクトリとは何ですか。

RStudio でプロジェクトを開始するときに、作業ディレクトリを選択します。 既定では、これは RStudio Server が実行されているドライバー (マスター) コンテナーのホームディレクトリです。 このディレクトリは、必要に応じて変更できます。

Azure Databricks で実行されている RStudio から Shiny アプリを起動できますか。

はい。Databricks の RStudio Server 内で、Shiny アプリケーションを開発して表示することができます。

Azure Databricks の RStudio 内で、terminal または git を使用できません。 どのように修正したらよいですか。

Websocket が無効になっていることを確認します。 RStudio Server Open Source Edition では、UI からこの操作を実行できます。

RStudio セッション

RStudio Server Pro では、/etc/rstudio/rsession.confallow-terminal-websockets=0 を追加して、すべてのユーザーに対して Websocket を無効にすることができます。

[クラスターの詳細] の下に [アプリ] タブが表示されません。

この機能は、すべてのお客様が使用できるわけではありません。 Premium プランを使用している必要があります。