R 開発者向けの Databricks

このセクションでは、R 言語を使用して Databricks でノートブックとジョブを開発するためのガイドを提供します。

開始するための基本的なワークフローは次のとおりです。

  1. コードのインポート: ファイルまたは Git リポジトリから独自のコードをインポートするか、以下にリストされているチュートリアルを試してください。 Databricks では、インタラクティブな Databricks ノートブックの使用方法を学ぶことをお勧めします。

  2. クラスターでコードを実行する: 独自のクラスターを作成するか、共有クラスターを使用するためのアクセス許可があることを確認します。 ノートブックをクラスターにアタッチし、ノートブックを実行します。

これを超えて、より具体的なトピックに分岐できます。

チュートリアル

次のチュートリアルでは、一般的なワークフローについて学習するためのサンプル コードとノートブックを提供します。 ノートブックの例をワークスペースにインポートする手順については、「 ノートブックのインポート 」を参照してください。

参考

次のサブセクションでは、R を使用して Databricks での開発を開始するのに役立つ主な機能とヒントを示します。

Databricks では、Apache Spark への R インターフェイスを提供する 2 つの APIs ( SparkRsparklyr) がサポートされています。

SparkR

これらの記事では、 SparkR の概要とリファレンスを提供します。 SparkR は、分散データ フレームの実装を提供する Apache Spark への R インターフェイスです。 SparkR は、選択、フィルター処理、集計 (R データ フレームと同様) などの操作をサポートしますが、大規模なデータセットに対してサポートされます。

スパークリー

この記事では、 スパークラーを紹介します。 sparklyr は Apache Spark への R インターフェイスで、 dplyrbroomおよび DBI と同様の機能を提供します。

SparkRとスパークラーの比較

この記事では、SparkR と sparklyr の主な類似点と相違点について説明します。

SparkR と sparklyr で DataFrames とテーブルを操作する

この記事では、R、SparkR、sparklyr、および dplyr を使用して R data.frames を操作する方法について説明します。 Spark DataFrames、および Databricks の Spark テーブル。

ノートブックと Databricks Git フォルダーを使用してコードを管理する

Databricks ノートブックは R をサポートしています。これらのノートブックは、Jupyter と同様の機能を提供しますが、MB を使用した組み込みの視覚化、デバッグとパフォーマンス モニタリングのための Apache Spark 統合、機械学習エクスペリメントを追跡するための MLflow 統合などの追加があります。 まず、ノートブックをインポートします。クラスターにアクセスできるようになったら、ノートブックをクラスターに アタッチ して ノートブックを実行できます

Databricks Git フォルダーを使用すると、ユーザーはノートブックやその他のファイルを Git リポジトリと同期できます。 Databricks Git フォルダーはコードのバージョン管理とコラボレーションに役立ち、コードの完全なリポジトリの Databricks へのインポート、過去のノートブック バージョンの表示、IDE 開発との統合を簡素化できます。 まず、リモート Git リポジトリのクローンを作成します。 その後、リポジトリ クローンを使用してノートブックを開いたり作成したり、ノートブックをクラスターに接続してノートブックを実行したりできます。

クラスター

Databricksコンピュートは、単一ノードと大規模クラスターの両方にコンピュート管理を提供します。 ニーズに応じてクラスターのハードウェアとライブラリをカスタマイズできます。 データサイエンティストは通常、クラスタを作成するか、既存の共有クラスタを使用することによって作業を開始します。 クラスターにアクセスできるようになると、クラスターにノートブックを接続したり、クラスター上でジョブを実行したりできます。

単一ノード R および分散 R

Databricks クラスターは、Apache Spark ドライバー ノードと、0 個以上の Spark ワーカー ( エグゼキューターとも呼ばれます) ノードで構成されます。 ドライバー ノードは、アタッチされたノートブックの状態を維持し、 SparkContextを維持し、ノートブックとライブラリのコマンドを解釈し、Spark エグゼキューターと連携する Spark マスターを実行します。 ワーカー ノードは、ワーカー ノードごとに 1 つの Spark エグゼキューターである Spark エグゼキューターを実行します。

シングルノードクラスターにはドライバーノードが 1 つあり、ワーカーノードはありません。Spark はローカルモードで実行され、Databricks によって管理されるテーブルへのアクセスをサポートします。 シングルノード クラスターは RStudio、ノートブック、ライブラリをサポートしており、ビッグデータや並列処理のために Spark に依存しない R プロジェクトに役立ちます。 「シングルノードまたはマルチノードのコンピュート」を参照してください。

R が処理するのに苦労するデータ サイズ (ギガバイトまたはペタバイト単位) の場合は、代わりに複数ノードまたは分散クラスターを使用する必要があります。 分散クラスターには 1 つのドライバー ノードと 1 つ以上のワーカー ノードがあります。 分散クラスターは、RStudio、ノートブック、ライブラリだけでなく、SparkR や Sparkly などの R パッケージもサポートします。これらは、 SparkContextを通じて分散クラスターを使用するように独自に設計されています。 これらのパッケージは、使い慣れた SQL および DataFrame APIsを提供し、ワーカー ノード間でさまざまな Spark タスクとコマンドを割り当てて並行して実行できるようにします。 Sparklyr と SparkR の詳細については、 「SparkR と Sparklyr の比較」を参照してください。

関連する作業をワーカー ノード間で分散することを特に利用する SparkR 関数と sparklyr 関数には、次のようなものがあります。

  • sparklyr::spark_apply: クラスター内で任意の R コードを大規模に実行します。 これは、R でのみ使用できる機能、または Apache Spark や他の Spark パッケージでは使用できない R パッケージを使用する場合に特に便利です。

  • SparkR::d apply: 指定された関数を SparkDataFrameの各パーティションに適用します。

  • SparkR::d applyCollect: 指定された関数を SparkDataFrame の各パーティションに適用し、結果を data.frameとして R に収集します。

  • SparkR::gapply: 指定された列を使用して SparkDataFrame をグループ化し、指定された R 関数を各グループに適用します。

  • SparkR::gapplyCollect: 指定された列を使用して SparkDataFrame をグループ化し、指定された R 関数を各グループに適用し、結果を data.frameとして R に収集します。

  • SparkR::spark.lapply: 要素のリストに対して指定された関数を実行し、Spark で計算を分散します。

例については、ノートブック 「分散 R: Spark のユーザー定義関数」を参照してください。

Databricks Container Services

Databricks Container Services では、クラスターの作成時に Dockerイメージを指定できます。 Databricks では、R をサポートする Databricks Container Services クラスターを起動するための例として、Docker Hub に databricksruntime/rbase ベース イメージが用意されています。 この基本イメージの生成に使用される Dockerfile も参照してください。

ライブラリ

Databricks クラスターは、Apache Spark、Delta Lake など、すぐに使用できる多くの一般的なライブラリを提供する Databricks Runtimeを使用します。 また、追加のサードパーティまたはカスタム R パッケージをライブラリにインストールして、ノートブックやジョブで使用することもできます。

Databricks Runtimeリリースノートのバージョンと互換性のデフォルトライブラリから始めます。機械学習ワークロードには、機械学習にDatabricks Runtime を使用します。プレインストールされているライブラリの完全な一覧については、「Databricks Runtime Databricks Runtimeリリースノートのバージョンと互換性 」のターゲット の「インストールされている R ライブラリ」セクションを参照してください。

ノートブック スコープの R ライブラリを使用して環境をカスタマイズでき、CRAN または他のリポジトリのライブラリを使用してノートブックまたはジョブ環境を変更できます。これを行うには、 utilsの使い慣れた install.packages 関数を使用できます。次に、デフォルトの CRAN リポジトリから Arrow R パッケージ をインストールする例を示します。

install.packages("arrow")

Databricks Runtimeに含まれているものよりも古いバージョンが必要な場合は、ノートブックを使用して devtoolsからinstall_version 関数を実行できます。次に、CRAN から dplyr バージョン 0.7.4 をインストールする例を示します。

require(devtools)

install_version(
  package = "dplyr",
  version = "0.7.4",
  repos   = "http://cran.r-project.org"
)

この方法でインストールされたパッケージは、クラスター全体で使用できます。 スコープは、それらをインストールするユーザーです。 これにより、パッケージの競合を発生させることなく、同じパッケージの複数のバージョンを同じコンピュートにインストールできます。

必要に応じて、他のライブラリを クラスタライブラリ としてインストールできます(CRANなどから)。 これを行うには、クラスターのユーザー インターフェイスで、[ライブラリ] > [ 新しい > CRAN のインストール] をクリックし、ライブラリの名前を指定します。 この方法は、SparkR または sparklyr を使用してユーザー定義関数を呼び出す場合に特に重要です。

詳細については、「 ライブラリ」を参照してください。

カスタムパッケージ をライブラリにインストールするには:

  1. コマンド ラインから、または RStudio を使用してカスタム パッケージをビルドします。

  2. カスタム パッケージ ファイルを開発マシンから Databricks ワークスペースにコピーします。 オプションについては、 「ライブラリ」を参照してください。

  3. install.packagesを実行して、カスタムパッケージをライブラリにインストールします。

    たとえば、ワークスペース内のノートブックから:

    install.packages(
      pkgs  = "/path/to/tar/file/<custom-package>.tar.gz",
      type  = "source",
      repos = NULL
    )
    

    又は:

    %sh
    R CMD INSTALL /path/to/tar/file/<custom-package>.tar.gz
    

カスタム パッケージをライブラリにインストールした後、そのライブラリを検索パスに追加し、1 つのコマンドでライブラリをロードします。

例:

# Add the library to the search path one time.
.libPaths(c("/path/to/tar/file/", .libPaths()))

# Load the library. You do not need to add the library to the search path again.
library(<custom-package>)

カスタム パッケージをライブラリとしてクラスタ内の ノードにインストールするには、[ initスクリプトとは] を使用する必要があります。

視覚 エフェクト

Databricks R ノートブックでは、 display 関数を使用したさまざまな種類の視覚化がサポートされています。

ジョブ

スケジュールされたノートブックまたはトリガーされたノートブックとして R ワークロードを自動化できます Databricks で Databricks ジョブを作成して実行します

  • UI を使用したジョブの作成の詳細については、「 ジョブの作成」を参照してください。

  • ジョブ API を使用すると、ジョブを作成、編集、および削除できます。

  • Databricks CLI には、ジョブ API を呼び出すための便利なコマンド ライン インターフェイスが用意されています。

機械学習

Databricks は、表形式データに対する従来の ML、コンピューター ビジョンと自然言語処理のためのディープラーニング、レコメンデーション システム、グラフ アナリティクスなど、さまざまな機械学習 (ML) ワークロードをサポートしています。 Databricks での機械学習に関する一般的な情報については、「機械学習のDatabricks Runtime」を参照してください。

ML アルゴリズムの場合、機械学習用にDatabricks Runtime にプレインストールされたライブラリを使用できます。カスタムライブラリをインストールすることもできます。

機械学習オペレーション (MLOps) の場合、Databricks はオープンソース ライブラリ MLflow にマネージド サービスを提供します。 MLflow Tracking を使用すると、モデル開発を記録し、再利用可能な形式でモデルを保存できます。 MLflow Model Registryを使用して、本番運用に向けたモデルのプロモーションを管理および自動化できます。 ジョブモデルサービングにより、モデルをバッチとしてホストし、ジョブを REST エンドポイントとしてストリーミングできます。 詳細な情報と例については、 MLflow を使用した機械学習ライフサイクル管理またはMLflow R API のドキュメントを参照してください。

R 開発者ツール

Databricks ノートブックに加えて、次の R 開発者ツールを使用することもできます。

R セッションのカスタマイズ

Databricks Runtime 12.2 LTS 以降では、サイト全体のプロファイル ( .Rprofile ) ファイルを使用して R セッションをカスタマイズできます。 R ノートブックは起動時にファイルを R コードとしてソースします。 ファイルを変更するには、 R_HOME の値を見つけて $R_HOME/etc/Rprofile.siteを変更します。 Databricksは、Databricks 上でホストされている RStudioが適切に機能するように、ファイルに構成を追加していることに注意してください。 いずれかを削除すると、RStudio が期待どおりに動作しなくなる可能性があります。

Databricks Runtime 11.3 LTS 以前では、環境変数DATABRICKS_ENABLE_RPROFILE=trueを設定することでこの動作を有効にできます。

関連リソース