次の方法で共有


R ライブラリの管理

ライブラリには、Microsoft Fabric Spark のプログラムまたはプロジェクトに含める再利用可能なコードが用意されています。

Microsoft Fabric では、TidyVerse を含む多くの一般的なオープンソース R パッケージがプレインストールされた R ランタイムがサポートされています。 Spark インスタンスが起動すると、これらのライブラリが自動的に含まれるので、ノートブックまたは Spark ジョブ定義ですぐに使用できます。

さまざまな理由で R ライブラリの更新が必要になる場合があります。 たとえば、コア依存関係の 1 つが新しいバージョンをリリースしたか、チームが Spark クラスターで使用できる必要があるカスタム パッケージを構築しています。

シナリオに基づいて、次の 2 種類のライブラリを含めることができます。

Microsoft Fabric には、次の 2 つのレベルのパッケージがインストールされています。

  • 環境: 環境 を使用してライブラリを管理し、複数のノートブックまたはジョブ間で同じライブラリ セットを再利用します。

  • セッション: セッション レベルのインストールでは、特定のノートブック セッションの環境が作成されます。 セッション レベルのライブラリの変更は、セッション間で保持されません。

現在使用可能な R ライブラリ管理の動作の概要:

ライブラリの種類 環境のインストール セッション レベルのインストール
R フィード (CRAN) サポートされていません サポートされている
R カスタム サポート対象 サポート対象

前提 条件

セッション レベルの R ライブラリ

対話型データ分析または機械学習を行うときは、新しいパッケージを試すか、ワークスペースで現在使用できないパッケージが必要になる場合があります。 ワークスペース設定を更新する代わりに、セッション スコープ パッケージを使用して、セッションの依存関係を追加、管理、更新できます。

  • セッション スコープ ライブラリをインストールすると、現在のノートブックのみが、指定したライブラリにアクセスできます。
  • これらのライブラリは、同じ Spark プールを使用する他のセッションやジョブには影響しません。
  • これらのライブラリは、基本ランタイムとプール レベルのライブラリの上にインストールされます。
  • ノートブック ライブラリの優先順位が最も高くなります。
  • セッション スコープの R ライブラリは、セッション間で保持されません。 これらのライブラリは、関連するインストール コマンドが実行されるときに、各セッションの開始時にインストールされます。
  • セッション スコープの R ライブラリは、ドライバー ノードとワーカー ノードの両方に自動的にインストールされます。

手記

R ライブラリを管理するコマンドは、パイプライン ジョブの実行時に無効になります。 パイプライン内にパッケージをインストールする場合は、ワークスペース レベルでライブラリ管理機能を使用する必要があります。

CRAN から R パッケージをインストールする

R ライブラリ は、CRANから簡単にインストールできます。

# install a package from CRAN
install.packages(c("nycflights13", "Lahman"))

CRAN スナップショットをリポジトリとして使用して、毎回同じパッケージ バージョンを確実にダウンロードすることもできます。

# install a package from CRAN snapsho
install.packages("highcharter", repos = "https://cran.microsoft.com/snapshot/2021-07-16/")

devtools を使用して R パッケージをインストールする

devtools ライブラリを使用すると、パッケージの開発が簡略化され、一般的なタスクが迅速化されます。 このライブラリは、既定の Microsoft Fabric ランタイム内にインストールされます。

devtools を使用して、インストールするライブラリの特定のバージョンを指定できます。 これらのライブラリは、クラスター内のすべてのノードにインストールされます。

# Install a specific version. 
install_version("caesar", version = "1.0.0")

同様に、GitHub から直接ライブラリをインストールできます。

# Install a GitHub library. 

install_github("jtilly/matchingR")

現在、Microsoft Fabric では次の devtools 関数がサポートされています。

コマンド 説明
install_github() GitHub から R パッケージをインストールします
install_gitlab() GitLab から R パッケージをインストールします
install_bitbucket() BitBucket から R パッケージをインストールします
install_url() 任意の URL から R パッケージをインストールします
install_git() 任意の Git リポジトリからのインストール
install_local() ディスク上のローカル ファイルからのインストール
install_version() CRAN の特定のバージョンからのインストール

R カスタム ライブラリをインストールする

セッション レベルのカスタム ライブラリを使用するには、まず、アタッチされた Lakehouse にアップロードする必要があります。

  1. カスタム ライブラリを使用するノートブックを開きます。

  2. 左側で [追加] を選択して、既存のレイクハウスを追加するか、レイクハウスを作成します。

    ノートブックにレイクハウスを追加する方法のスクリーンショット。

  3. 右クリックするか、ファイル の横にある "..." を選択して、.tar.gz ファイルをアップロードします。

    lakehouse Files フォルダーにファイルをアップロードする方法のスクリーンショット。

  4. アップロードした後、ノートブックに戻ります。 次のコマンドを使用して、カスタム ライブラリをセッションにインストールします。

    install.packages("filepath/filename.tar.gz", repos = NULL, type = "source")
    

インストールされているライブラリを表示する

library コマンドを使用して、セッション内にインストールされているすべてのライブラリに対してクエリを実行します。

# query all the libraries installed in current session
library()

packageVersion 関数を使用して、ライブラリのバージョンを確認します。

# check the package version
packageVersion("caesar")

セッションから R パッケージを削除する

detach 関数を使用して、名前空間からライブラリを削除できます。 これらのライブラリは、再び読み込まれるまでディスク上に残ります。

# detach a library

detach("package: caesar")

セッション スコープ パッケージをノートブックから削除するには、remove.packages() コマンドを使用します。 このライブラリの変更は、同じクラスター上の他のセッションには影響しません。 ユーザーは、既定の Microsoft Fabric ランタイムの組み込みライブラリをアンインストールまたは削除できません。

手記

SparkR、SparklyR、R などのコア パッケージを削除することはできません。

remove.packages("caesar")

セッション スコープの R ライブラリと SparkR

ノートブック スコープのライブラリは、SparkR ワーカーで利用できます。

install.packages("stringr")
library(SparkR)

str_length_function <- function(x) {
  library(stringr)
  str_length(x)
}

docs <- c("Wow, I really like the new light sabers!",
               "That book was excellent.",
               "R is a fantastic language.",
               "The service in this restaurant was miserable.",
               "This is neither positive or negative.")

spark.lapply(docs, str_length_function)

セッション スコープの R ライブラリと sparklyr

sparklyr の spark_apply() では、Spark 内の任意の R パッケージを使用できます。 既定では、sparklyr::spark_apply()では、packages 引数は FALSE に設定されます。 これにより、現在の libPath 内のライブラリがワーカーにコピーされ、ワーカーにインポートして使用できるようになります。 たとえば、次のコマンドを実行して、sparklyr::spark_apply()でシーザーで暗号化されたメッセージを生成できます。

install.packages("caesar", repos = "https://cran.microsoft.com/snapshot/2021-07-16/")

spark_version <- sparkR.version()
config <- spark_config()
sc <- spark_connect(master = "yarn", version = spark_version, spark_home = "/opt/spark", config = config)

apply_cases <- function(x) {
  library(caesar)
  caesar("hello world")
}
sdf_len(sc, 5) %>%
  spark_apply(apply_cases, packages=FALSE)

R 機能の詳細については、以下を参照してください。