R 開発者向けの Azure Databricks

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

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

  1. コードのインポート: ファイルまたは Git リポジトリから独自のコードをインポートするか、以下に示すチュートリアルを試してください。 Databricks では、対話型の Azure Databricks ノートブックの使用について学習することをお勧めします。
  2. クラスターでコードを実行する: 独自のクラスターを作成するか、共有クラスターを使用するアクセス許可があることを確認します。 ノートブックをクラスターにアタッチし、ノートブックを実行します。

これ以外にも、より具体的なトピックに分けることができます。

チュートリアル

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

リファレンス

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

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

SparkR

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

sparklyr

この記事では、sparklyr の概要について説明します。 sparklyr は、dplyrbroom、および DBI と同様の機能を提供する Apache Spark の R インターフェイスです。

SparkR と sparklyr の比較

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

SparkR と sparklyr を使用して DataFrame とテーブルを操作する

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

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

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

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

クラスター

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

単一ノード R と分散 R

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

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

R が処理に苦労するデータ サイズ (数ギガバイトまたはペタバイト) の場合は、代わりに複数ノードまたは分散クラスターを使用する必要があります。 分散クラスターには、1 つのドライバー ノードと 1 つ以上のワーカー ノードがあります。 分散クラスターでは、RStudio、ノートブック、ライブラリだけでなく SparkR や sparkly などの R パッケージもサポートされ、R パッケージは SparkContext を介して分散クラスターを使用するように独自に設計されています。 これらのパッケージは、使い慣れた SQL API と DataFrame API を提供します。これにより、ワーカー ノード間でさまざまな 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 コンテナー サービス

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

ライブラリ

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

Databricks Runtime リリース ノートのバージョンと互換性」の既定のライブラリから始めます。 機械学習ワークロードには、「Databricks Runtime for Machine Learning」 を使用します。 事前にインストールされているライブラリの完全な一覧については、「Databricks Runtimeのリリースノートのバージョンと互換性」でターゲットの Databricks Runtime の「インストールされている R ライブラリ」セクションをご覧ください。

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

install.packages("arrow")

Databricks Runtime に含まれているバージョンより古いバージョンが必要な場合は、ノートブックを使って devtoolsinstall_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. 開発マシンから Azure 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 スクリプトとは」を使用する必要があります。

視覚化

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

ジョブ

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

  • UI を使用したジョブの作成の詳細については、「ジョブの作成」を参照してください。
  • Jobs API を使用すると、ジョブを作成、編集、および削除できます。
  • Databricks CLI には、Jobs API を呼び出すための便利なコマンド ライン インターフェイスが用意されています。

機械学習

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

ML アルゴリズムの場合、「Databricks Runtime for Machine Learning」 にプリインストールされたライブラリを使用できます。 カスタム ライブラリをインストールすることもできます。

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

R 開発者ツール

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

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

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

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

その他のリソース