はじめに
ETLツールであるTROCCO®の転送先として、Databricksが2024年6月に追加されました。
自社製品がDatabricksに対応したと聞き、近いうちに触りたいと思ってました。
元々の興味・関心がデータサイエンスや機械学習にあったため、存在自体は以前から認知していました。
加えて、現職で日々扱っているデータエンジニア面の機能も整備されており、今後積極的に使っていきたいプラットフォームの1つでもありました。
自分の勉強もかねて、これから何回かにわたり、機械学習と絡めてDatabricksの機能を記事にしていきたいと思います。
記念すべき第1回は、㊗️転送先Databricksとして「TROCCO®を活用してkaggleのデータを準備する手順」について紹介していきます。
対象の読者
- 機械学習やデータサイエンスにDatabricksを通じて触れたい方
- Databricksのデータ準備でTROCCO®の活用を考えている方
Databricksて何?
開発に入る前に、簡単なDatabricksの説明をします。
Databricksは、Apache Sparkの生みの親が開発したデータ分析基盤のプラットフォームです。
最大の特徴は「レイクハウス・プラットフォーム」を提供していることです。
レイクハウスとは、データの収集・蓄積から分析・機械学習モデル開発並びに運用を一気通貫・効率的かつ安価に行うことができる統合プラットフォームであり、データレイクとデータウェアハウスの2つの機能を持っています。
長所は、データの在処が比較的わかりやすい構造になってることから、データのサイロ化を防いでくれる点にあります。
また、Databricks内ではNotebook環境があり、画像データのような非構造化データも扱うことができるため、データサイエンティストやMLエンジニアにとって非常に馴染みやすい構造になってます。
これらの点を踏まえ、Databricksは機械学習やデータサイエンスに取り組む上で非常に有用なプラットフォームの1つだと言えます。
転送するデータの紹介
機械学習の題材として、kaggle APIからデータを取得します。
kaggleやったことある人なら知っているであろう、Titanicデータを今回は使います。
転送前の事前準備
転送を実装する前に、Databricks,TROCCO®,Kaggle APIそれぞれで事前の設定が必要になります。
転送用Databricksのウェアハウス・スキーマの準備
Databricksのアカウントがあることを前提とします。無料でも始められます。
まず、Databricks内にSQLウェアハウスを作成してください。
次に、データ転送にあたり、Databricks上でスキーマを作成する必要があります。
「SQLエディタ」から下記SQLを叩くなどして、転送用のスキーマを作ります。
CREATE SCHEMA IF NOT EXISTS {カタログ}.{スキーマ};
作成されたかどうかはカタログから参照できます。
TROCCO®でのDatabricksの認証設定
Databricksと接続するにあたり、TROCCO®で認証設定が必要になります。
TROCCO®の画面から、接続情報の新規作成を選び、Databricksを選択します。
TROCCO®との接続は、DatabricksのSQLウェアハウス単位で行います。
SQLウェアハウスの「サーバーのホスト名」「HTTPパス」を、TROCCO®の「Server Hostname」「HTTP Path」に設定します。
またTROCCO®のPersional Access Tokenについては、SQLウェアハウスの「パーソナルアクセストークンを作成する」を押して、アクセストークンを発行してください。
(バツ閉じするとアクセストークンが再表示できないので、メモの準備をお願いします)
kaggle APIのトークン取得
最後にkaggle APIを使うための、トークン発行を行います。
Settingの画面から、APIのCreate New Tokenを押して、発行します。
発行後、jsonファイルとしてローカルにダウンロードされます。
後の章で使うusername
とkey
が取得できます。
転送の実装
TROCCO®にログインし、転送設定の新規作成に進み、以下を選択します。
- 転送元 HTTP・HTTPS
- 転送先 Databricks
転送元の設定
今回はTitanicデータの中で、train.csv(訓練データ)を転送します。
kaggel APIの設定は以下表のように実行してください。
表にない項目はデフォルト値や空欄で問題ありませんでした。
設定項目名 | 設定内容 |
---|---|
URL | https://www.kaggle.com/api/v1/competitions/data/download/titanic/train.csv |
HTTPメソッド | GET |
文字エンコーディング | utf8 |
ファイル入力形式 | CSV/TSV |
HTTPヘッダAuthorization
|
Basic username :key
|
※ HTTPヘッダのusername
:key
はBASE64に変換する必要がありました...汗
今回こちらのサイトを活用して認証がうまくいきました。
転送先の設定
転送先の設定として、Databricksのカタログ、スキーマ、テーブルを設定してきます。
転送モードは今回全件洗い替え(REPLACE)を採用、詳細設定はご自身の環境に合わせて設定してください。
STEP2に進み、転送前のデータの中身を確認します。
データ型等はデフォルトの値で転送上問題ありませんでした。
実行結果の確認
Databricks内のSQLエディタを開き、下記SQLを叩いて、データが正しく表示されれば転送成功です!お疲れ様でした!
SELECT *
FROM
{カタログ}.{スキーマ}.{テーブル};
まとめと今後の予定
今回はDatabricksの転送先が開発されたことを記念して、試しにkaggleのデータを転送してみました。
本業で取り組んでいる「転送元HTTPの記事発信」と同じ感覚で設定できたので、楽に進めることができました!
初手でDatabricksを扱うのは、これくらいから始めるのが良さげですね。
また、kaggle APIを紹介したブログや記事ではCLIを使ってる場合が多いですが、TROCCO®だと設定項目も少なくGUIで完結するため、スムーズにデータ転送ができます。
転送元HTTP・HTTPS、本当に使い勝手良いですね。
次回は、Databricks内のNotebookをいじっていきたいと思っています。
何回連載するかは未定ですが、最終的には、社内に蓄積されたデータを使って、予測モデルを構築し、予実の乖離を見て遊びたいと思います。
続編を楽しみにしていてください!
参考文献
TROCCO®,kaggle,Databricksの公式ドキュメント以外にも以下の記事を参考にしました。