SQL Server のビッグ データ クラスターで sparklyr を使用する

適用対象: SQL Server 2019 (15.x)

重要

Microsoft SQL Server 2019 ビッグ データ クラスターのアドオンは廃止されます。 SQL Server 2019 ビッグ データ クラスターのサポートは、2025 年 2 月 28 日に終了します。 ソフトウェア アシュアランス付きの SQL Server 2019 を使用する既存の全ユーザーはプラットフォームで完全にサポートされ、ソフトウェアはその時点まで SQL Server の累積更新プログラムによって引き続きメンテナンスされます。 詳細については、お知らせのブログ記事と「Microsoft SQL Server プラットフォームのビッグ データ オプション」を参照してください。

Sparklyr には、Apache Spark 用の R インターフェイスが用意されています。 Sparklyr は、Spark を使用する R 開発者にとって一般的な方法です。 この記事では、RStudio を使用して SQL Server 2019 ビッグ データ クラスター で sparklyr を使用する方法について説明します。

前提条件

R と RStudio Desktop をインストールする

次の手順で RStudio Desktop をインストールして構成します。

  1. Windows クライアントで実行している場合は、R 3.6.3 をダウンロードしてインストールします。 また、RTools 3.5 もダウンロードしてインストールします。 PATH 環境変数で RTools バイナリ フォルダーを構成してください。

    警告

    R バージョン 4.x および以下で指定されている以外の sparklyr バージョンは、SQL Server ビッグ データ クラスター CU13 時点で動作しないことが確認されています。

  2. RStudio Desktop をダウンロードしてインストールします。 必要に応じて、すべてのサンプルを R シェルで動作させることができます。

  3. インストールが完了したら、RStudio Desktop または R シェル内で次のコマンドを実行して、必要なパッケージをインストールします。 確認を求められたら、ソースからパッケージをコンパイルすることを確認します。

install.packages("devtools")
devtools::install_github('rstudio/sparklyr', ref = 'v1.7.0', upgrade = 'always', repos = 'https://cran.microsoft.com/snapshot/2021-06-11/')

ビッグ データ クラスターで Spark に接続する

sparklyr を使用し、Livy と HDFS/Spark ゲートウェイを使用してクライアントからビッグ データ クラスターに接続できます。

RStudio で、次の例のように R スクリプトを作成し、Spark に接続します。

ヒント

<AZDATA_USERNAME><AZDATA_PASSWORD> の値については、ビッグ データ クラスターの展開中に設定したユーザー名とパスワードを使用します。

SQL Server 2019 (15.x) CU 5 以降、基本認証で新しいクラスターを展開すると、ゲートウェイを含むすべてのエンドポイントで AZDATA_USERNAMEAZDATA_PASSWORD が使用されます。 CU 5 にアップグレードされるクラスターのエンドポイントでは、ゲートウェイ エンドポイントに接続するとき、ユーザー名として root が引き続き使用されます。 この変更は、Active Directory 認証による展開には適用されません。 このリリース ノートの「ゲートウェイ エンドポイント経由でサービスにアクセスするための資格情報」を参照してください。

<IP><PORT> の値については、ビッグ データ クラスターへの接続に関するドキュメントを参照してください。

library(sparklyr)
library(dplyr)
library(DBI)

#Specify the Knox username and password
config <- livy_config(user = "<AZDATA_USERNAME>", password = "<AZDATA_PASSWORD>")

httr::set_config(httr::config(ssl_verifypeer = 0L, ssl_verifyhost = 0L))

sc <- spark_connect(master = "https://<IP>:<PORT>/gateway/default/livy/v1",
                    method = "livy",
                    config = config)

sparklyr クエリを実行する

Spark に接続すると、sparklyr を実行できます。 次の例では、sparklyr を使用して、iris データセットに対してクエリを実行します。

iris_tbl <- copy_to(sc, iris)

iris_count <- dbGetQuery(sc, "SELECT COUNT(*) FROM iris")

iris_count

分散 R 計算

sparklyr の機能の 1 つとして、spark_apply を使用して R 計算を分散する機能があります。

ビッグ データ クラスターは Livy 接続が使用されるため、spark_apply の呼び出しで packages = FALSE を設定する必要があります。 詳細については、分散 R 計算に関する sparklyr のドキュメントの「Livy」セクションを参照してください。 この設定では、spark_apply に渡された R コードで、Spark クラスターに既にインストールされている R パッケージのみを使用できます。 この機能について、次の例を示します。

iris_tbl %>% spark_apply(function(e) nrow(e), names = "nrow", group_by = "Species", packages = FALSE)

次のステップ

ビッグ データ クラスターの詳細については、SQL Server 2019 ビッグ データ クラスター とはの概要に関するページを参照してください。