CRAN 上の sparklyr の最新リリースに Databricks Connect のサポートが導入されたことをお知らせできることを嬉しく思います。R ユーザーは、リモートの RStudio Desktop、Posit Workbench、またはアクティブな R ターミナルやプロセスから、Databricks のクラスタリングと Unity Catalog にシームレスにアクセスできるようになりました。今回のアップデートにより、R ユーザーであれば誰でも、わずか数行のコードで Databricks を使ってデータアプリケーションを構築できるようになりました。
このリリースでは、pysparklyr コンパニオン・パッケージを通じて、sparklyr の新しいバックエンドを導入しています。pysparklyr は sparklyr が Python Databricks Connect API とやりとりするためのブリッジを提供します。これは、R から Python と対話するために reticulate パッケージを使用することによって実現されます。
この方法で新しい sparklyr バックエンドを設計すると、Python でリリースされた機能をラップするだけで、Databricks Connect の機能を R ユーザーに提供することが容易になります。 現在、Databricks Connect はApache Spark™ DataFrame API を完全にサポートしており、Sparklyr のチートシートを参照することで、利用可能な追加機能を確認できます。
まず、sparklyr と pysparklyr パッケージを CRAN から R セッションにインストールします。
install.packages("sparklyr")
install.packages("pysparklyr")
ワークスペースのURL(別名ホスト)、アクセストークン、クラスタ IDを指定することで、R セッションと Databricks クラスタとの接続を確立できます。sparklyr::spark_connect() に直接引数として認証情報を渡すこともできますが、セキュリティを高めるために環境変数として保存することをお勧めします。 さらに、sparklyr を使って Databricks に接続する場合、pysparklyr が依存関係を特定し、Python 仮想環境へのインストールをサポートしてくれます。
# This example assumes a first time connection with
# DATABRICKS_HOST and DATABRICKS_TOKEN set as environment variables
library(sparklyr)
sc <- spark_connect(
cluster_id = "1026-175310-7cpsh3g8",
method = "databricks_connect"
)
#> ! Retrieving version from cluster '1026-175310-7cpsh3g8'
#> Cluster version: '14.1'
#> ! No viable Python Environment was identified for Databricks Connect version 14.1
#> Do you wish to install Databricks Connect version 14.1?
#>
#> 1: Yes
#> 2: No
#> 3: Cancel
#>
#> Selection: 1
初期セットアップの詳細とヒントは、公式ページ(sparklyr )に掲載されています。
sparklyr との接続に成功すると、RStudio の [接続] ペインにUnity Catalog のデータが表示され、Databricks で管理されているデータを簡単にブラウズしてアクセスできるようになります。
Unity Catalog は、Databricks 上のデータと AI のための包括的なガバナンス・ソリューションです。 Unity Catalog で管理されるデータ・テーブルは、カタログ、スキーマ、テーブルの 3 レベルのネームスペースに存在します。 sparklyr バックエンドを Databricks Connect を使用するように更新することで、R ユーザーは catalog.schema.table 階層を表現するデータを読み書きできるようになりました:
library(dplyr)
library(dbplyr)
# Read samples.nyctaxi.trips table with catalog.schema.table heirarchy
trips <- tbl(sc, in_catalog("samples", "nyctaxi", "trips"))
trips
#> # Source: spark<trips> [?? x 6]
#> tpep_pickup_datetime tpep_dropoff_datetime trip_distance fare_amount
#> <dttm> <dttm> <dbl> <dbl>
#> 1 2016-02-14 10:52:13 2016-02-14 11:16:04 4.94 19
#> 2 2016-02-04 12:44:19 2016-02-04 12:46:00 0.28 3.5
#> 3 2016-02-17 11:13:57 2016-02-17 11:17:55 0.7 5
#> 4 2016-02-18 04:36:07 2016-02-18 04:41:45 0.8 6
#> 5 2016-02-22 08:14:41 2016-02-22 08:31:52 4.51 17
#> 6 2016-02-05 00:45:02 2016-02-05 00:50:26 1.8 7
#> 7 2016-02-15 09:03:28 2016-02-15 09:18:45 2.58 12
#> 8 2016-02-25 13:09:26 2016-02-25 13:24:50 1.4 11
#> 9 2016-02-13 10:28:18 2016-02-13 10:36:36 1.21 7.5
#> 10 2016-02-13 18:03:48 2016-02-13 18:10:24 0.6 6
#> # ℹ more rows
#> # ℹ 2 more variables: pickup_zip <int>, dropoff_zip <int>
Databricks を使ったインタラクティブな作業をシンプルで使い慣れたものにするため、sparklyr はデータの変換と集計のための dplyr 構文を長い間サポートしてきました。 Databricks Connectを搭載した最新バージョンも同様です:
# Get total trips and average trip distance, NYC Taxi dataset
trips |>
group_by(pickup_zip) |>
summarise(
count = n(),
avg_distance = mean(trip_distance, na.rm = TRUE)
)
#> # Source: spark<?> [?? x 3]
#> pickup_zip count avg_distance
#> <int> <dbl> <dbl>
#> 1 10032 15 4.49
#> 2 10013 273 2.98
#> 3 10022 519 2.00
#> 4 10162 414 2.19
#> 5 10018 1012 2.60
#> 6 11106 39 2.03
#> 7 10011 1129 2.29
#> 8 11103 16 2.75
#> 9 11237 15 3.31
#>10 11422 429 15.5
#> # ℹ more rows
#> # ℹ Use `print(n = ...)` to see more rows
さらに、sparklyr や Databricks Connect を使用する関数やスクリプトをデバッグする必要がある場合、RStudio の browser() 関数は、膨大なデータセットを扱う場合でも、見事に機能します。
Databricks バックエンド上で Shyny のようなデータアプリケーションを開発することは、かつてないほど簡単になりました。Databricks Connect は軽量であるため、Databricks クラスタ上に直接デプロイすることなく、大規模なデータの読み取り、変換、書き込みを行うアプリケーションを構築できます。
R で Shyny を使用する場合、接続方法は上記の開発作業で使用したものと同じです。Shiny for Python で作業する場合も同様で、PySpark で Databricks Connect を使用するためのドキュメントに従ってください。 R で Shyny を使用したデータアプリの例や、Python の plotly のような他のフレームワークの例もあります。
詳細については、公式の sparklyr および Databricks Connect のドキュメントを参照してください。Apache Spark™ API が現在サポートしているものについての詳細情報も含まれています。 また、Posit Connect 上で Databricks Connect を使用する Shyny アプリをデプロイする方法など、これらの機能をすべてデモンストレーションする Posit Webセミナーもご覧ください。