次の方法で共有


R ライブラリの管理

ライブラリには、Microsoft Fabric Spark のプログラムまたはプロジェクトに組み込むことができる再利用可能なコードが用意されています。

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

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

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

  • フィード ライブラリとは、CRAN や GitHub などのパブリック ソースまたはリポジトリに存在するライブラリを指します。

  • カスタム ライブラリは、自分または組織によって構築されたコードであり、.tar.gz はライブラリ管理ポータルを通じて管理できます。

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

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

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

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

ライブラリ タイプ 環境のインストール セッション レベルのインストール
R フィード (CRAN) サポートされていません サポートされています
R Custom サポートされています サポートされています

前提条件

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

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

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

Note

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

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

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

# 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 ファイルをアップロードします。

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

  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 ランタイムの組み込みライブラリをアンインストールまたは削除することはできません。

Note

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 に設定されます。 これにより現在の libPaths 内のライブラリがワーカーにコピーされ、それをワーカーにインポートして使用できます。 たとえば、次を実行すると、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 機能の詳細については、以下を参照してください。