[レポート] SparkとIcebergを使ってアナリスト向けのレイクハウスを構築 – Subsurface LIVE Summer 2021

2021.08.10

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

米国時間2021年07月21日〜22日の計2日間、オンラインで開催された「Subsurface LIVE Summer 2021」では、主催となるDremio社のサービスやクラウドデータレイクに関する各種サービスやプロダクトのセッションが展開されていました。

当エントリでは、その中から「Enabling Analysts to Build a Lakehouse w/Spark SQL & Iceberg」(SparkとIcebergを使ってアナリストがレイクハウスを作ってみた)というセッションについてレポートします。

目次

 

セッション概要

セッション概要は以下の通り。

<セッションタイトル>
Enabling Analysts to Build a Lakehouse with Spark SQL and Iceberg
(SparkとIcebergを使ってアナリストがレイクハウスを作ってみた)

<登壇者>
Sachin Bansal - Founder, CEO @ Cuebook
Vikrant Dubey - Head of Engineering @ Cuebook

<発表内容>
Can SQL analysts build and manage a data lakehouse?

We believe data engineering should be simple, so that analysts with SQL skills can join engineers in managing data.

In this session, we’ll share our learnings from building CueLake, an open source tool to build a lakehouse (github.com/cuebook/cuelake).

(SQLアナリストはデータレイクハウスを構築・管理できるのか?

私たちは、データエンジニアリングはシンプルであるべきだと考えており、SQLスキルを持つアナリストがエンジニアと一緒にデータを管理できるようにしたいと考えています。

このセッションでは、レイクハウスを構築するためのオープンソースツール「CueLake」(github.com/cuebook/cuelake)の構築から得られた学びをご紹介します。)

 

セッションレポート

ここからはセッションレポートとなります。それぞれのトピックに関して要点をまとめる形で紹介。

アジェンダ

  • なぜCueLakeなのか
  • アナリストのために環境を構築
  • CueLake

CueLakeを採用するまでに至った理由等

  • なぜCueLakeなのか
    • データエンジニアリングがコードを減らし、SQLを増やすものであるならば、SQLのスキルを持ったアナリストがエンジニアと一緒に組むことでデータを管理していけるのでは?という思いから。
  • なぜ分析が必要なのか
    • アナリストはビジネスチームに近い存在であるため、ビジネスユーザーが何を求めているのかをより良く理解している
  • なぜレイクハウスが必要なのか
    • オープンアーキテクチャであること
    • コストパフォーマンスの面で効果が見込めると判断したこと

CuaLake

SQLアナリストによるデータの構築と管理を可能にするレイクハウスプロダクト。

CueLake概要

CueLakeでは、SQLを使ってデータレイクハウス上でELT(Extract/Load/Transform)パイプラインを構築することが出来る。ZeppelinのノートブックにSparkのSQL文を記述することが出来、ワークフロー(DAG)を使ってこれらノートブックで作成した処理をスケジュール出来る。

インクリメンタルデータの抽出とロードには、シンプルなSELECTステートメントを記述して対応。CueLakeは、これらのステートメントをデータベースに対して実行し、増分データをデータレイクハウス(Apache Icebergを使用)にマージする。

データの変換にはSQLステートメントを記述して、データレイクハウスにビューとテーブルを作成することで対応。

CueLakeでは実行ファイルとしてはCeleryを、スケジューラとしてはcelery-beatを使用。CelelyのジョブはZeppelinのノートブックを起動することで対応、Zeppelinはノートブックのスケジュール実行毎にSparkクラスタを自動起動・停止することで対応。

アナリスト向けに環境を構築

  • データは予め保存されていること
  • 柔軟で自動化された抽出(Extract)とロード(Load):必要なデータを必要な頻度で必要な時に移動させる「反復データパイプライン」を準備
  • 変換については極力コードを減らす

Notebook実行例

スケジューリング、ログ情報の参照、ワークフローの実行、クラスタサイズの設定などを紹介。

主な要点は以下。

  • ワークフローはノートブックの集合体で、スケジュールや他のワークフローの成功または失敗に応じて起動させることができる
  • クラスタサイズの設定
    • デフォルトのクラスタサイズは、sparkインタープリタの設定で設定。
    • クラスタサイズを変更するには、ノートブックの最初にクラスターサイズを定義。
  • メタストアテーブル
    • CueLakeはHive Metastoreに接続し、Sparkで作成されたテーブルやビューの情報を表示
    • テーブルのサイズ、最終更新日、カラムの情報を表示

Cuelake 現時点での制限事項など

  • AWS環境でのみ動作
  • 事前に構築されたHiveメタストアが必要となる
  • Zeppelinの設定変更が困難
  • 並列ジョブの制限がある
  • 認証周りの設定については未対応

今後の対応について

  • ワークスペース
  • データリネージ
  • Spark履歴サーバ
  • 開発者向けのAPI

 

まとめ

という訳で、クラウドデータレイクイベント『Subsurface LIVE Summer 2021』のセッション「Enabling Analysts to Build a Lakehouse w/Spark SQL & Iceberg」(SparkとIcebergを使ってアナリストがレイクハウスを作ってみた)のレポートでした。

エンジニアとアナリストが居る組織であれば、当エントリで紹介した組み合わせの環境作成・移行もスムーズに進められるかもしれませんね。