R 開発者向けの Databricks
このセクションでは、R 言語を使用して Databricks でノートブックとジョブを開発するためのガイドを提供します。
開始するための基本的なワークフローは次のとおりです。
コードのインポート: ファイルまたは Git リポジトリから独自のコードをインポートするか、以下にリストされているチュートリアルを試してください。 Databricks では、インタラクティブな Databricks ノートブックの使用方法を学ぶことをお勧めします。
クラスターでコードを実行する: 独自のクラスターを作成するか、共有クラスターを使用するためのアクセス許可があることを確認します。 ノートブックをクラスターにアタッチし、ノートブックを実行します。
これを超えて、より具体的なトピックに分岐できます。
Apache Spark を使用した大規模なデータ セットの操作
機械学習を使用して データを分析する
チュートリアル
次のチュートリアルでは、一般的なワークフローについて学習するためのサンプル コードとノートブックを提供します。 ノートブックの例をワークスペースにインポートする手順については、「 ノートブックのインポート 」を参照してください。
参考
次のサブセクションでは、R を使用して Databricks での開発を開始するのに役立つ主な機能とヒントを示します。
Databricks では、Apache Spark への R インターフェイスを提供する 2 つの APIs ( SparkR と sparklyr) がサポートされています。
SparkR
これらの記事では、 SparkR の概要とリファレンスを提供します。 SparkR は、分散データ フレームの実装を提供する Apache Spark への R インターフェイスです。 SparkR は、選択、フィルター処理、集計 (R データ フレームと同様) などの操作をサポートしますが、大規模なデータセットに対してサポートされます。
スパークリー
この記事では、 スパークラーを紹介します。 sparklyr は Apache Spark への R インターフェイスで、 dplyr、 broom
、 および DBI と同様の機能を提供します。
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 を使用してユーザー定義関数を呼び出す場合に特に重要です。
詳細については、「 ライブラリ」を参照してください。
カスタムパッケージ をライブラリにインストールするには:
コマンド ラインから、または RStudio を使用してカスタム パッケージをビルドします。
カスタム パッケージ ファイルを開発マシンから Databricks ワークスペースにコピーします。 オプションについては、 「ライブラリ」を参照してください。
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スクリプトとは] を使用する必要があります。
ジョブ
スケジュールされたノートブックまたはトリガーされたノートブックとして 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 開発者ツールを使用することもできます。
SparkR と RStudio Desktop を Databricks Connect と共に使用します。
sparklyr と RStudio Desktop を Databricks Connect と共に使用します。
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
を設定することでこの動作を有効にできます。