R 開発者向けのDatabricks

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

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

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

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

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

チュートリアル

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

参考

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

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

SparkR

重要

Databricks の SparkR は、Databricks Runtime 16.0 以降では 非推奨とされています 。 Databricks 代わりに Sparklyr を使用することをお勧めします。

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

sparklyr

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

SparkR と sparklyr の比較

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

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

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

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

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

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

クラスター

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

単一ノード 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 で自動化できます。

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

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

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

機械学習

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

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

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

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を設定することでこの動作を有効にできます。

関連リソース