著者 Adam Tworkiewicz
最終更新日 2022年4月12日
警告
本記事はTeradata CorporationのサイトGetting Startedに掲載された内容を抄訳したものです。掲載内容の正確性・完全性・信頼性・最新性を保証するものではございません。正確な内容については、原本をご参照下さい。
また、修正が必要な箇所や、ご要望についてはコメントをよろしくお願いします。
概要
このクイックスタートでは、JupyterノートブックからTeradata Vantageに接続する方法を説明します。
Vantageの新しいインスタンスが必要な場合は、Google Cloud、Azure、AWSのクラウドにVantage Expressという無料版をインストールすることができます。また、VMware、VirtualBox、またはUTMを使用して、ローカルマシン上でVantage Expressを実行することもできます。
オプション
Jupyter ノートブックから Vantage に接続するには、いくつかの方法があります。
① 通常の Python/R カーネルノートブックで Python または R ライブラリを使用する - このオプションは、独自の Docker イメージを生成することができない制限された環境にいる場合に有効です。また、従来のデータサイエンス・シナリオで、SQLとPython/Rをノートブックに混在させなければならない場合にも有効です。もしあなたがJupyterを使いこなし、自分好みのライブラリや拡張機能のセットを持っているなら、このオプションから始めてみてください。
② Teradata Jupyter Dockerイメージの使用 - Teradata Jupyter Dockerイメージは、Teradata SQLカーネル(詳細は後述)、teradatamlおよびtdplyrライブラリ、pythonおよびRドライバをバンドルしています。また、Teradataの接続を管理したり、Vantageデータベースのオブジェクトを探索したりするためのJupyter拡張も含まれています。SQLをよく使う場合や、ビジュアルナビゲータがあると便利です。Jupyterを初めて使う場合や、ライブラリや拡張機能の精選されたアセンブリを入手したい場合は、このオプションから始めてください。
Teradataのライブラリ
このオプションでは、通常のJupyter Labノートブックを使用します。Teradata Pythonドライバをロードし、Pythonコードから使用する方法について見ていきます。また、SQLのみのセルのサポートを追加するipython-sql拡張についても検証します。
① まず、プレーンなJupyter Labノートブックから始めます。ここでは docker を使っていますが、Jupyter Hub、Google Cloud AI Platform Notebooks、AWS SageMaker Notebooks、Azure ML Notebooks など、ノートブックを起動する方法であれば何でも構いません。
docker run --rm -p 8888:8888 -e JUPYTER_ENABLE_LAB=yes \
-v "${PWD}":/home/jovyan/work jupyter/datascience-notebook
② Docker logsに必要なurlが表示されます。
Entered start.sh with args: jupyter lab
Executing the command: jupyter lab
....
To access the server, open this file in a browser:
file:///home/jovyan/.local/share/jupyter/runtime/jpserver-7-open.html
Or copy and paste one of these URLs:
http://d5c2323ae5db:8888/lab?token=5fb43e674367c6895e8c2404188aa550b5c7bdf96f5b4a3a
or http://127.0.0.1:8888/lab?token=5fb43e674367c6895e8c2404188aa550b5c7bdf96f5b4a3a
③ 新しいノートブックを開き、必要なライブラリをインストールするためのセルを作成します。
以下に説明するすべてのセルを含むノートブックをGitHubで公開しています: https://github.com/Teradata/quickstarts/blob/main/modules/ROOT/attachments/vantage-with-python-libraries.ipynb
import sys
!{sys.executable} -m pip install teradatasqlalchemy
④ では、Pandasをインポートして、Teradataに接続するための接続文字列を定義していきます。ノートブックをローカルマシンのDockerで動かしていて、ローカルのVantage Express VMに接続したいので、Dockerが提供するhost.docker.internal DNS名を使って、自分のマシンのIPを参照するようにしています。
import pandas as pd
db_connection_string = "teradatasql://dbc:dbc@host.docker.internal/dbc"
⑤ Pandasを呼び出してVantageに問い合わせ、その結果をPandasのデータフレームに移動することができるようになりました。
pd.read_sql("SELECT * FROM dbc.dbcinfo", con = db_connection_string)
⑥ 上記の構文は簡潔ですが、Vantageでデータを探索するだけであれば、退屈になることがあります。ここではipython-sqlと %%sqlの魔法を使って、SQLのみのセルを作成します。まずは必要なライブラリのインポートから始めます。
import sys
!{sys.executable} -m pip install ipython-sql teradatasqlalchemy
⑦ ipython-sqlをロードし、データベース接続文字列を定義します。
%load_ext sql
%sql teradatasql://dbc:dbc@host.docker.internal/dbc
⑧ これで %sql と %%sql のマジックが使えるようになりました。例えば、テーブルの中のデータを探検したいとします。というセルを作ればいいのです。
%%sql
SELECT * FROM dbc.dbcinfo
⑨ データをPandasのフレームに移動させたい場合は、次のようになります。
result = %sql SELECT * FROM dbc.dbcinfo
result.DataFrame()
ipython-sql は他にも変数の置換、matplotlibによるプロット、ローカルcsvファイルへの書き込み、データベースへの戻しなど、多くの機能を提供しています。サンプルは demo notebook を、完全なリファレンスは ipython-sql github repo を参照してください。
Teradata Jupyter Dockerイメージ
Teradata Jupyter Docker イメージは、jupyter/datascience-notebook Dockerイメージをベースに構築されています。Teradata SQLカーネル、Teradata PythonおよびRライブラリ、Jupyter拡張を追加し、Teradata Vantageと対話しながら生産性を向上させることができます。また、このイメージには、SQLカーネルとTeradataライブラリの使用方法を示すサンプルノートブックが含まれています。
SQLカーネルとTeradata Jupyter拡張は、SQLインターフェイスに多くの時間を費やす人々にとって便利なものです。多くの場合、Teradata Studioを使うよりも便利なノートブック体験とお考えください。Teradata Jupyter Dockerイメージは、Teradata Studioを置き換えようとするものではありません。すべての機能を備えているわけでもない。軽量でWebベースのインターフェイスを必要とし、ノートブックUIを楽しむ人のために設計されています。
Teradata Jupyter Dockerイメージは、ローカルでJupyterを実行したい場合や、カスタムJupyter Dockerイメージを実行できる場所がある場合に使用できます。以下の手順は、ローカルでイメージを使用する方法を示しています。
① イメージを実行します
オプション -e "accept_license=Y" を指定すると、Teradata Jupyter Extensions の使用許諾に同意したことになります。
docker volume create notebooks
docker run -e "accept_license=Y" -p :8888:8888 \
-v notebooks:/home/jovyan/JupyterLabRoot \
teradata/jupyterlab-extensions
② Dockerのログには、必要なurlが表示されます。例えば、こんな感じです。
Starting JupyterLab ...
Docker Build ID = 3.2.0-ec02012022
Using unencrypted HTTP
Enter this URL in your browser: http://localhost:8888?token=96a3ab874a03779c400966bf492fe270c2221cdcc74b61ed
* Or enter this token when prompted by Jupyter: 96a3ab874a03779c400966bf492fe270c2221cdcc74b61ed
* If you used a different port to run your Docker, replace 8888 with your port number
③ URLを開き、ファイルエクスプローラーで以下のノートブックを開いてください: jupyterextensions → notebooks → sql → GettingStartedDemo.ipynb.
④ Teradata SQL Kernelのデモをご覧ください。
画像1
まとめ
このクイックスタートでは、Jupyter NotebookからTeradata Vantageに接続するためのさまざまなオプションについて説明しました。複数のTeradata PythonおよびRライブラリをバンドルしたTeradata Jupyter Dockerイメージについて学びました。また、SQLカーネル、データベースオブジェクトエクスプローラー、接続管理も提供されています。これらの機能は、SQLのインターフェイスに多くの時間を費やす場合に便利です。より伝統的なデータサイエンス・シナリオについては、スタンドアロンのTeradata Pythonドライバと、ipython sql拡張による統合を検討しました。
さらに詳しく
・Teradata Jupyter Extensions Website
・Teradata Vantage™ Modules for Jupyter Installation Guide
・Teradata® Package for Python User Guide