RStudio on Databricks

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

RStudio デスクトップを使用して接続する

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

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

ローカル開発マシンで RStudio デスクトップをセットアップするには:

  1. R 3.3.0以降をダウンロードしてインストールします。

  2. RStudio デスクトップをダウンロードしてインストールします

  3. RStudio デスクトップを起動します。

(オプション)RStudio プロジェクトを作成するには:

  1. RStudio デスクトップを起動します。

  2. [ ファイル] > [新しいプロジェクト] をクリックします。

  3. [ 新しいディレクトリ] > [新しいプロジェクト] を選択します。

  4. プロジェクトの新しいディレクトリを選択し、[ プロジェクトの作成] をクリックします。

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

  1. プロジェクトを開いた状態で、[ ファイル] > [新しいファイル > R スクリプト] をクリックします。

  2. [ ファイル] > [名前を付けて保存] をクリックします。

  3. ファイルに名前を付け、[ 保存] をクリックします。

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

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

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

    自動化されたツール、システム、スクリプト、アプリを使用して認証する場合のセキュリティのベスト プラクティスとして、Databricks ではOAuth トークンを使用することをお勧めします。

    個人のアクセス トークン認証を使用する場合、 Databricksでは、ワークスペース ユーザーではなく、サービスプリンシパルに属する個人のアクセス トークンを使用することをお勧めします。 サービスプリンシパルのトークンを作成するには、 「サービスプリンシパルのトークンの管理」を参照してください。

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

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

  5. RStudio コンソール (表示>コンソールへのフォーカスの移動) から、 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 スクリプト (表示>ソースへのフォーカスの移動) に戻り、インストールされている odbc パッケージと DBI パッケージを読み込みます。

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

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

    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

Databricks でホストされている RStudio サーバーに接続する

重要

Databricks でホストされる RStudio サーバーは 非推奨 であり、Databricks Runtime バージョン 15.4 以前でのみ使用できます。 詳細については、「 Hosted RStudio Server の廃止」を参照してください。

WebDatabricks ブラウザーを使用して ワークスペースにサインインし、そのワークスペースにDatabricksRStudio Server がインストールされている コンピュートに接続します 。

詳細については、「Databricksでホストされている RStudio Server に接続する」を参照してください

RStudio 統合アーキテクチャ

Databricksで RStudio サーバーを使用すると、RStudio サーバー デーモンは Databricks クラスターのドライバー ノードで実行されます。RStudio Web UI は Databricks Web アプリを介してプロキシされるため、クラスター ネットワーク構成を変更する必要はありません。 この図は、RStudio 統合コンポーネントのアーキテクチャを示しています。

Databricks上のRStudioのアーキテクチャ

警告

Databricks は、クラスターの Spark ドライバーのポート 8787 から RStudio Web サービスをプロキシします。 この Web プロキシは、RStudio でのみ使用することを目的としています。 ポート 8787 で他の Web サービスを起動すると、ユーザーが潜在的なセキュリティエクスプロイトにさらされる可能性があります。 Databricks は、サポートされていないソフトウェアをクラスターにインストールすることに起因する問題については責任を負いません。

要件

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

  • そのクラスターに対するCan Attach To権限が必要です。 クラスター管理者は、この権限をユーザーに付与できます。 「コンピュート権限」を参照してください。

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

  • クラスターの Spark 構成 spark.databricks.pyspark.enableProcessIsolationtrueに設定 されていない必要があります

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

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

はじめに: RStudio Server OS Edition

RStudio Server オープンソース エディションは、Databricks Runtime for Machine Learning (Databricks Runtime 機械学習) を使用する Databricks クラスターにプレインストールされています。

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

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

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

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

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

    RStudio ログインフォーム
  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 オープンソース Edition session
  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オープンソースエディションのキラキラした接続

はじめに: RStudio ワークベンチ

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

RStudio ライセンス サーバーをセットアップする

Databricks で RStudio Workbench を使用するには、Pro ライセンスを フローティング ライセンスに変換する必要があります。 サポートが必要な場合は、 help@rstudio までお問い合わせくださいcom. ライセンスを変換するときは、RStudio ワークベンチの ライセンス サーバー を設定する必要があります。

ライセンスサーバーを設定するには:

  1. クラウドプロバイダーネットワーク上で小さなインスタンスを起動します。ライセンスサーバーデーモンは非常に軽量です。

  2. 対応するバージョンの RStudio ライセンス サーバーをインスタンスにダウンロードしてインストールし、サービスを開始します。 詳細な手順については、「 RStudio ワークベンチ管理者ガイド」を参照してください。

  3. ライセンス サーバー ポートが Databricks インスタンスに対して開かれていることを確認します。

RStudio ワークベンチをインストールする

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

RStudio Server オープンソース エディション パッケージが既に含まれている Databricks Runtime バージョンに RStudio Workbench をインストールする場合は、インストールを成功させるために、まずそのパッケージをアンインストールする必要があります。

以下は、ワークスペース ファイルとしてホーム ディレクトリ、 Unity Catalogボリューム、オブジェクト ストレージなどの場所に init スクリプトとして保存できる .sh ファイルの例です。 詳細については、 「クラスター スコープの init スクリプトの使用」を参照してください。 このスクリプトは、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> を 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 connection

RStudio Server FAQ

RStudio Server オープンソース Edition と RStudio Workbench の違いは何ですか?

RStudio ワークベンチは、オープンソースエディションでは利用できない幅広いエンタープライズ機能をサポートしています。 機能の比較は 、RStudioのウェブサイトで見ることができます。

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

最後に、RStudio Workbench には RStudio、PBC によるプロフェッショナルおよびエンタープライズ サポートが付属していますが、RStudio Server オープンソース エディションにはサポートがありません。

RStudio Workbench / RStudio Server Pro ライセンスを Databricks で使用できますか?

はい、RStudio サーバーのプロ ライセンスまたはエンタープライズ ライセンスを既にお持ちの場合は、そのライセンスを Databricks で使用できます。 Databricks で RStudio ワークベンチを設定する方法については、「 はじめに: RStudio ワークベンチ 」を参照してください。

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

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

標準クラスタで RStudio サーバーを使用できますか?

この記事では、従来のクラスター UI について説明します。 クラスター アクセス モードの用語の変更を含む、新しいクラスター UI (プレビュー版) に関する情報については、 「コンピュート構成リファレンス」を参照してください。 新しいクラスター タイプと従来のクラスター タイプの比較については、 「クラスター UI の変更とクラスター アクセス モード」を参照してください。

はい、できます。

自動終了機能を備えたクラスターで RStudio サーバーを使用できますか?

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

使用されていないときにクラスター リソースをクリーンアップする必要がある顧客の場合、Databricks では、クラスター を使用して、スケジュールに基づいて APIsRStudio クラスター をクリーンアップすることをお勧めします。

RStudioで作業を維持するにはどうすればよいですか?

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

1 つの方法は、ファイル (コードまたはデータ) を[Databricks ファイル システム (DBFS) とは]に保存することです。 たとえば、 /dbfs/の下にファイルを保存すると、クラスターが終了または再起動されてもファイルは削除されません。

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

別の方法は、Amazon エラスティックファイルシステム (Amazon EFS) ボリュームをクラスターにマウントして、クラスターがシャットダウンされたときに作業内容が失われないようにすることです。 クラスターが再起動すると、Databricks によって Amazon EFS ボリュームが再マウントされ、中断したところから続行できます。 既存の Amazon EFS ボリュームをクラスターにマウントするには、クラスター API 2.0 でクラスター の作成 (POST /api/2.0/clusters/create) または クラスターの編集 (POST /api/2.0/clusters/edit) オペレーションを呼び出し、オペレーションの cluster_mount_infos 配列で Amazon EFS ボリュームのマウント情報を指定します。

作成または使用するクラスターで、Unity Catalog、自動終了、または自動スケーリングが有効になっていないことを確認します。 また、クラスターで chmod a+w </path/to/volume> コマンドを実行するなどして、クラスターにマウントされたボリュームへの書き込みアクセス権があることを確認します。 このコマンドは、クラスターの Web ターミナルを使用して既存のクラスターで実行することも、前の操作の init_scripts 配列で指定した initスクリプトを使用して新しいクラスターで実行することもできます。

既存の Amazon EFS ボリュームがない場合は、作成できます。 まず、Databricks 管理者に連絡して、Databricks ワークスペースの VPC ID、パブリック サブネット ID、およびセキュリティグループ ID を取得します。 次に、この情報と AWS マネジメントコンソール を使用して、 Amazon EFS コンソールを使用してカスタム設定のファイルシステムを作成します。 この手順の最後のステップで、[ 接続 ] をクリックし、前述の cluster_mount_infos アレイで指定した DNS 名とマウント オプションをコピーします。

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の内容を確認してください。 ドライバーに /home/ubuntu/databricks/spark/R/lib/SparkR を一覧表示して、 SparkR パッケージがインストールされていることを確認します。

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

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

  • Databricks 図書館として

  • install.packages() コマンド

  • RStudio パッケージ管理 UI

library(sparklyr)

sc <- spark_connect(method = databricks)

RStudio は Databricks R ノートブックとどのように統合されますか?

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

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

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

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

はい、 Databricks上のRStudioサーバー内で Shiny アプリケーションを開発および表示できます。

私は Databricks上でRStudio内でターミナルやgitを使用することはできません。 どうすれば修正できますか?

Web ソケットが無効になっていることを確認します。 RStudio Server オープンソース エディションでは、UI からこれを行うことができます。

RStudio Session

RStudio サーバー プロでは、 /etc/rstudio/rsession.confallow-terminal-websockets=0 を追加して、すべてのユーザーに対して Web ソケットを無効にすることができます。

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

この機能は、すべてのお客様が利用できるわけではありません。 プレミアムプラン以上である必要があります。