メインコンテンツへジャンプ

R開発者にレイクハウスを:Databricks Connectがsparklyrで利用可能に

ラフィー・カーランシック
ウラディスラフ・マンティック=ル��ーゴ
ステファニア・レオーネ
Share this post

CRAN 上の sparklyr の最新リリースに Databricks Connect のサポートが導入されたことをお知らせできることを嬉しく思います。R ユーザーは、リモートの RStudio Desktop、Posit Workbench、またはアクティブな R ターミナルやプロセスから、Databricks のクラスタリングと Unity Catalog にシームレスにアクセスできるようになりました。今回のアップデートにより、R ユーザーであれば誰でも、わずか数行のコードで Databricks を使ってデータアプリケーションを構築できるようになりました。

Sparklyr と Python Databricks Connect との統合方法

このリリースでは、​​pysparklyr コンパニオン・パッケージを通じて、sparklyr の新しいバックエンドを導入しています。pysparklyr は sparklyr が Python Databricks Connect API とやりとりするためのブリッジを提供します。これは、R から Python と対話するために reticulate パッケージを使用することによって実現されます。

フローチャート
Image source: sparklyr documentation

この方法で新しい sparklyr バックエンドを設計すると、Python でリリースされた機能をラップするだけで、Databricks Connect の機能を R ユーザーに提供することが容易になります。 現在、Databricks Connect はApache Spark™ DataFrame API を完全にサポートしており、Sparklyr のチートシートを参照することで、利用可能な追加機能を確認できます。

Sparklyr と Databricks Connect を使い始める

まず、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 )に掲載されています。

Unity Catalog のデータへのアクセス

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を利用したアプリケーション

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セミナーもご覧ください。

Databricks 無料トライアル

関連記事

ファウンデーションモデル機能でGenAIアプリをより速く構築する方法

先週 発表した RAG( Retrieval Augmented Generation )に続き、Model Servingのメジャーアップデートを発表できることを嬉しく思います。Databricks Model Servingは 統一されたインターフェイス を提供するようになり、すべてのクラウドとプロバイダで基盤モデルの実験、カスタマイズ、プロダクション化が容易になりました。これは、組織固有のデータを安全に活用しながら、ユースケースに最適なモデルを使用して高品質のGenAIアプリを作成できることを意味します。 新しい統一インターフェースにより、Databricks上であろうと外部でホストされていようと、すべてのモデルを一箇所で管理し、単一のAPIでクエリすることができます。さらに、Llama2 や MPT モデルなどの一般的な大規模言語モデル (LLM) に Databricks 内から直接アクセスできる Foundation Model API...

レイクハウス・モニタリング: データとAIの品質監視のための統合ソリューション

はじめに Databricks Lakehouse Monitoring (レイクハウス・モニタリング)を使用すると、データからフィーチャー、MLモデルまで、すべてのデータパイプラインを追加のツールや複雑な操作なしに監視できます。 Unity Catalog に組み込まれているため、ガバナンスと並行して品質を追跡し、データとAI資産のパフォーマンスについて深い洞察を得ることができます。Lakehouse Monitoringは完全にサーバーレスなので、インフラストラクチャやコンピュート構成のチューニングを心配する必要はありません。 Lakehouseのモニタリングに対する統一されたアプローチにより、 Databricks Data Intelligence Platform で直接、品質の追跡、エラーの診断、ソリューションの検索が簡単に行えます。Lakehouse Monitoringを最大限に活用する方法を本記事ではご紹介します。 なぜレイクハウス・モニタリングなのか? データパイプラインは順調に動いているよう
パートナー一覧へ