Azure Synapse Analytics で R for Apache Spark を使用する (プレビュー)

Azure Synapse Analytics には、R for Apache Spark のサポートが組み込まれています。 この一環として、データ サイエンティストは Azure Synapse Analytics ノートブックを使用して R コードを記述し、実行できます。 これには SparkRSparklyR のサポートも含まれています。ユーザーはこれを使用することで、使い慣れた Spark または R のインターフェイスで Spark と対話できます。

この記事では、Azure Synapse Analytics で R for Apache Spark を使用する方法について説明します。

R ランタイム

Azure Synapse Analytics では、TidyVerse を含む多くの一般的なオープンソース R パッケージを備える R ランタイムをサポートしています。 R ランタイムは、すべての Apache Spark 3 プールで使用できます。

各ランタイムにインストールされているライブラリの詳細については、Azure Synapse Analytics ランタイムに関するページを参照してください

ノートブック セッションを作成して実行する

Azure Synapse ノートブックは、ライブ コード、視覚化、説明テキストを含むファイルを作成するための Web インターフェイスです。 ノートブックは、アイデアを確認し、簡単な実験を使用してデータから分析情報を得るのに最適な場所です。 ノートブックは、データの準備、データの視覚化、機械学習、およびその他のビッグ データのシナリオでも広く使用されています。

Synapse ノートブックで R の使用を開始するには、言語オプションSparkR (R) に設定してプライマリ言語を変更します。

R 言語オプションのスクリーンショット。

さらに、セルの先頭に言語マジック コマンドを指定することで、1 つのノートブックで複数の言語を使用できます。

%%sparkr
# Enter your R code here

Azure Synapse Analytics 内のノートブックの詳細については、ノートブックの管理方法に関するガイドを参照してください。

パッケージをインストールする

ライブラリには、プログラムやプロジェクトに含めることができる再利用可能なコードが用意されています。 サード パーティのコードまたはローカル環境でビルドされたコードをアプリケーションで使用できるようにするには、いずれかのサーバーレス Apache Spark プールまたはノートブック セッションにライブラリをインストールすることができます。

R ワークスペース パッケージを管理する

Synapse では、ワークスペース パッケージをパブリックまたはカスタム/プライベート <R_Package>.tar.gz ファイルにできます。 依存関係もインストールする必要があります。 これらのパッケージをワークスペースにアップロードし、後で特定のサーバーレス Apache Spark プールに割り当てることができます。 割り当てが完了すると、これらのワークスペース パッケージは、対応するプールで開始されているすべての Spark プール セッションに自動的にインストールされます。

ワークスペース ライブラリを管理する方法の詳細については、ワークスペース パッケージの管理に関する記事を参照してください

R セッションを管理する

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

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

たとえば、ユーザーは CRAN および CRAN スナップショットから R ライブラリをインストールできます。 下の例では、Highcharter は R 視覚化用の一般的なパッケージです。 次のコマンドを使用すると、Apache Spark プール内のすべてのノードにこのパッケージをインストールできます。

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

セッション R ライブラリを管理する方法の詳細については、R セッション パッケージの管理に関する記事を参照してください

Notebook のユーティリティ

Microsoft Spark Utilities (MSSparkUtils) は、一般的なタスクをより簡単に実行できるようにする組み込みパッケージです。 MSSparkUtils を使用すると、ファイル システムを操作し、環境変数を取得し、ノートブックをまとめてチェーン化し、シークレットを操作できます。 MSSparkUtils は R ノートブックでサポートされています。

最初に、次のコマンドを実行できます。

library(notebookutils)
mssparkutils.fs.help()

サポートされている MSSparkUtils コマンドの詳細については、Microsoft Spark ユーティリティの使用に関する記事を参照してください

SparkR を使用する

SparkR は、R から Apache Spark を使用するための軽量フロントエンドを提供する R パッケージです。SparkR には、選択、フィルター処理、集計などの操作をサポートする分散データ フレームの実装が用意されています。また、SparkR では、MLlib を使用した分散機械学習もサポートします。

ローカルの R データフレームから SparkR データフレームを作成する

DataFrame を作成する最も簡単な方法は、ローカルの R データフレームを SparkDataFrame に変換することです。 この例では、as.DataFrame を使用し、ローカル R データフレームを渡して SparkDataFrame を作成します。

df <- as.DataFrame(faithful)

# Displays the first part of the SparkDataFrame
head(df)
##  eruptions waiting
##1     3.600      79
##2     1.800      54

Spark データ ソース API を使用して SparkR データフレームを作成する

SparkR では、SparkDataFrame インターフェイスを使用してさまざまなデータ ソースでの操作をサポートします。 データ ソースから DataFrame を作成するための一般的なメソッドは、read.df です。 このメソッドでは、読み込むファイルのパスとデータ ソースの種類を受け取ります。 SparkR では、CSV、JSON、テキスト、Parquet の各ファイルをネイティブに読み取ることができます。

# Read a csv from ADLSg2
df <- read.df('abfss://<container name>@<storage account name>.dfs.core.windows.net/avocado.csv', 'csv', header="true")
head(df)

Spark SQL を使用して SparkR データフレームを作成する

Spark SQL クエリを使用して SparkR DataFrame を作成することもできます。

# Register this SparkDataFrame as a temporary view.
createOrReplaceTempView(df, "eruptions")

# SQL statements can be run by using the sql method
sql_df <- sql("SELECT * FROM eruptions")
head(sql_df)

機械学習

SparkR では、ほとんどの MLLib アルゴリズムが公開されています。 内部的には、SparkR ではモデルをトレーニングするために MLlib が使用されます。 サポートされている機械学習アルゴリズムの詳細については、SparkR と MLlib に関するドキュメントを参照してください。

# Create the DataFrame
cars <- cbind(model = rownames(mtcars), mtcars)
carsDF <- createDataFrame(cars)

# Fit a linear model over the dataset.
model <- spark.glm(carsDF, mpg ~ wt + cyl)

# Model coefficients are returned in a similar format to R's native glm().
summary(model)

SparklyR を使用する

SparklyR は、Apache Spark への R インターフェイスです。 これによって、使い慣れた R インターフェイスを使用して Spark と対話するメカニズムが得られます。

sparklyr 接続を確立するには、spark_connect() で次の接続メソッドを使用します。

spark_version <- "<enter Spark version>"
config <- spark_config()
sc <- spark_connect(master = "yarn", version = spark_version, spark_home = "/opt/spark", config = config, method='synapse')

次のステップ