Teradata Jupyter Extentionsと SageMakerノートブックインスタンスの統合

著者 姜 海玲
最終更新日 2022年9月27日

# 概要

Teradata Jupyter ExtentionsはTeradata SQLカーネルといくつかのUI拡張を提供しユーザーがJupyter環境からTeradataデータベースを簡単に操作できるようにするものです。この記事ではJupyter ExtentionsとSageMakerノートブックインスタンスを連携させる方法について説明します。

# 前提条件

・Teradata Vantageインスタンスへのアクセス

:::note info
Vantageの新しいインスタンスが必要な場合は、[Google Cloud](https://qiita.com/ykswi/items/10a382de5fa5a4a42c50)、[Azure](https://qiita.com/ykswi/items/2c30aa1f5413b16c838c)、[AWS](https://qiita.com/ykswi/items/fba559149ad568678d58)のクラウドにVantage Expressという無料版をインストールすることができます。また、[VMware](https://qiita.com/ykswi/items/ebe1d854c38db9bb0f51)、[VirtualBox](https://qiita.com/ykswi/items/ffadaa375add309f2075)、または[UTM](https://qiita.com/ykswi/items/94995954ae723185c2f7)を使用して、ローカルマシン上でVantage Expressを実行することもできます。
:::

・AWSアカウント

・ライフサイクル構成スクリプトとTeradata Jupyter Extentionsパッケージを格納するためのAWS S3バケット

# 統合化

SageMakerは、ライフサイクルコンフィギュレーションスクリプトを使用したノートブックインスタンスのカスタマイズをサポートしています。以下では、ライフサイクル構成スクリプトを使用して、Jupyterカーネルと拡張機能をノートブックインスタンスにインストールする方法をデモします。

**notebookインスタンスと連携するための手順**

1．Teradata Jupyter Extentionsパッケージのダウンロード

Linux版を [https://downloads.teradata.com/download/tools/vantage-modules-for-jupyter](https://downloads.teradata.com/download/tools/vantage-modules-for-jupyter) からダウンロードし、S3バケットにアップロードしてください。Teradata Jupyterのカーネルとエクステンションを含むzipパッケージです。
各エクステンションには2つのファイルがあり、名前に"_prebuilt "が付いているものがPIPでインストールできるプリビルドエクステンション、もう1つが "jupyter labextension "でインストールする必要があるソースエクステンションになります。プレビルド拡張を使用することをお勧めします。

2．notebookインスタンスのライフサイクル設定の作成

![画像1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2742714/c51786a8-e618-b481-c03d-8df2c7501c06.png)

以下はS3バケットからTeradataパッケージを取得しJupyterカーネルとエクステンションをインストールするスクリプトのサンプルです。on-create.shはノートブックインスタンスのEBSボリュームに永続化するカスタムconda envを作成し、ノートブック再起動後にインストールが失われないようにしています。on-start.shは、カスタムconda envにTeradataカーネルとエクステンションをインストールします。

```:on-create.sh
#!/bin/bash

set -e

# This script installs a custom, persistent installation of conda on the Notebook Instance's EBS volume, and ensures
# that these custom environments are available as kernels in Jupyter.


sudo -u ec2-user -i <<'EOF'
unset SUDO_UID
# Install a separate conda installation via Miniconda
WORKING_DIR=/home/ec2-user/SageMaker/custom-miniconda
mkdir -p "$WORKING_DIR"
wget https://repo.anaconda.com/miniconda/Miniconda3-4.6.14-Linux-x86_64.sh -O "$WORKING_DIR/miniconda.sh"
bash "$WORKING_DIR/miniconda.sh" -b -u -p "$WORKING_DIR/miniconda"
rm -rf "$WORKING_DIR/miniconda.sh"
# Create a custom conda environment
source "$WORKING_DIR/miniconda/bin/activate"
KERNEL_NAME="teradatasql"

PYTHON="3.8"
conda create --yes --name "$KERNEL_NAME" python="$PYTHON"
conda activate "$KERNEL_NAME"
pip install --quiet ipykernel

EOF
```

```:on-start.sh
#!/bin/bash

set -e

# This script installs Teradata Jupyter kernel and extensions.


sudo -u ec2-user -i <<'EOF'
unset SUDO_UID

WORKING_DIR=/home/ec2-user/SageMaker/custom-miniconda

source "$WORKING_DIR/miniconda/bin/activate" teradatasql

# fetch Teradata Jupyter extensions package from S3 and unzip it
mkdir -p "$WORKING_DIR/teradata"
aws s3 cp s3://sagemaker-teradata-bucket/teradatasqllinux_3.3.0-ec06172022.zip "$WORKING_DIR/teradata"
cd "$WORKING_DIR/teradata"

unzip -o teradatasqllinux_3.3.0-ec06172022.zip

# install Teradata kernel
cp teradatakernel /home/ec2-user/anaconda3/condabin
jupyter kernelspec install --user ./teradatasql

# install Teradata Jupyter extensions
source /home/ec2-user/anaconda3/bin/activate JupyterSystemEnv

pip install teradata_connection_manager_prebuilt-3.3.0.tar.gz
pip install teradata_database_explorer_prebuilt-3.3.0.tar.gz
pip install teradata_preferences_prebuilt-3.3.0.tar.gz
pip install teradata_resultset_renderer_prebuilt-3.3.0.tar.gz
pip install teradata_sqlhighlighter_prebuilt-3.3.0.tar.gz

conda deactivate
EOF
```

3．ノートブックインスタンスを作成します。
Platform identifierに「Amazon Linux 2, Jupyter Lab3」を選択しLifecycle configurationに手順2で作成したライフサイクル構成を選択してください。

![画像2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2742714/5cd76d74-a2e5-3a9c-35ee-e321a96647d3.png)

また、Teradataデータベースにアクセスするために「Network」セクションにvpc、サブネット、セキュリティグループを追加する必要がある場合があります。

4．ノートブックインスタンスのステータスが「InService」になるまで待ち「Open JupyterLab」をクリックし、ノートブックを開きます。

![画像3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2742714/a9cc9d98-f667-93ad-9c55-3231b1aaed00.png)

デモノートにアクセスし使い方のヒントを得ることができます。

![画像4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2742714/1c4ed38e-c9d0-ecb2-bbd1-a91991ad28cf.png)

# さらに詳しく

以下もあわせてご覧ください。

・[Teradata Jupyter Extensions Website](https://teradata.github.io/jupyterextensions)

・[Teradata Vantage™ Modules for Jupyter Installation Guide](https://docs.teradata.com/r/KQLs1kPXZ02rGWaS9Ktoww/root)

・[Teradata® Package for Python User Guide](https://docs.teradata.com/r/1YKutX2ODdO9ppo_fnguTA/root)

・[Customize a Notebook Instance Using a Lifecycle Configuration Script](https://docs.aws.amazon.com/sagemaker/latest/dg/notebook-lifecycle-config.html)

・[amazon sagemaker notebook instance lifecycle config samples](https://github.com/aws-samples/amazon-sagemaker-notebook-instance-lifecycle-config-samples/blob/master/scripts/persistent-conda-ebs/on-create.sh)

#### Teradata Vantageへのお問合せ
[Teradata Vantage へのお問合せ](https://www.teradata.jp/About-Us/Contact)