概要
Windows Subsystem for Linux (WSL)上に、 特定用途の利用のみを想定した Linux 環境を新規作成(エクスポート&インポート)して、Databricks Connect により Databricks に接続するまでの手順を共有します。
本手順で構築できる環境の概要は次のようになっております。
- wsl 上に構築した Databricks Connect 専用の Linux 環境に対して、 miniconda をインストールし、Databricks Connect のバージョンごとに Conda 環境を構築
- Visual Studio Code 上でコードフォーマットなどが実施できるように、ライブラリをインストールし、pyproject.toml や .vscode/settings.json で設定を共有。
- 環境の利用終了する場合には、
wsl --unregister <Distro>
コマンドにより wsl 上の Linux 環境を削除。
本手順で利用するレポジトリーは、 Github 上に配置してあります。
本記事の位置付け
次の開発ガイドシリーズにおけるDevOps分野の1記事であり、リンク先には記事にて記事の全体像を整理している。
GroupID | 分野 |
---|---|
T10 | Spark概要 |
T20 | データエンジニアリング |
T30 | データ品質チェック |
T40 | データサイエンス |
T50 | メタデータデプロイ |
T60 | テスト |
T70 | DevOps |
基本方針
Databricks Connect 環境の構築方法としては下記表の方法が考えられるが、1の方法を採用しました。ローカル環境の OS が Windows の場合には、Databricks で利用されている OS との仕様差異を最小限とするために、Databricks Runtime と同じバージョンの Operating System (Databricks Runtime 10.4 LTS を利用する場合には Ubuntu 20.04 LTS) を用いるべきです。
# | 方法 | Pros | Cons |
---|---|---|---|
1 | Conda (無償:Miniconda、有償:Anaconda)を用いて構築する方法 | - 初期環境の統一ができ、環境を柔軟に切り替え可能 | - 環境の統一が困難 |
2 | Poetry を用いて構築する方法 | - 環境の統一が容易 | - Databricks Connect のバージョンを切り替えることができない |
3 | コンテナ(無償:Rancher Desktop、有償:Docker Desktop)を用いて構築するする方法 | - 初期環境の統一ができ、環境を柔軟に切り替え可能 | - コンテナーに関する知識が必要 |
4 | Python 仮想環境を用いずに直接構築する方法 | - 特になし | - Databricks Connect のバージョンを切り替えることができない |
Python の Linter と Formatter として次のライブラリを利用することとしました。
# | 分類 | ライブラリ名 | 目的 |
---|---|---|---|
1 | Formatter | black | コードに対するフォーマットツール。 |
2 | Formatter | isort | import文に対するフォーマットツール。 |
3 | Linter | flake8 | コードに対する静的解析ツール。 |
4 | Linter | pydocstyle | Docstring に対する静的解析ツール。 |
5 | Linter | mypy | 型に対する静的解析ツール。 |
ライブラリの設定値は、次のファイルにて設定してます。
# | ファイル名 | 概要 |
---|---|---|
1 | pyproject.toml | 基本的な設定値を設定。 |
2 | .vscode/settings.json | ローカル環境でのみ有効な設定値を設定。テスト実行時の並列数の設定など。 |
3 | .vscode/launch.json | デバッグ時にのみ有効な設定値を設定。カバレッジレポートを取得しない設定など。 |
Conda 環境情報をenvironment.yml
に記述しており、Databricks Connect に対応した Python バージョンをベースにrequirements.txt
を pip install する構成にしている。requirements.txt
では、Databricks Connect や Linter などの次に示している開発時に必要なライブラリだけでなく、Databricks Runtime にインストールされている多くのライブラリを保持している。
構築手順
0. 事前準備
事前準備として、以下のインストールを事前に実施。
1. WSL 上の Ubuntu 20.04 環境をエクスポートして別名でインポート
1-1. Windows Terminal にて powershell を起動後、以下のコマンドを実行
# Set wsl distro name
$src_wsl_distro_name = "Ubuntu-20.04"
$tgt_wsl_distro_name = "databricks-connect"
# Update wsl version to 2
wsl --set-version $src_wsl_distro_name 2
$wsl_file_name = $src_wsl_distro_name + ".tar"
wsl --export $src_wsl_distro_name $wsl_file_name
# Import wsl distro_name
wsl --import $tgt_wsl_distro_name $tgt_wsl_distro_name $wsl_file_name
# Check wsl dstro list
wsl -l
# login to wsl distro
wsl -d $tgt_wsl_distro_name -u root
default_user_name
変数にて、ubuntu で作成したユーザー名をセットして、以下のコマンドを実行します。default_user_name
変数の値を必要に応じて変更してください。
# Set default user name
default_user_name=wsl_user
cat << EOF > /etc/wsl.conf
[user]
default=$default_user_name
EOF
# chekc wsl.conf
cat /etc/wsl.conf
# logout
exit
# Delete distro file
Remove-Item $wsl_file_name
# reboot and re-login
wsl -t $tgt_wsl_distro_name
wsl -d $tgt_wsl_distro_name
sudo apt update && sudo apt upgrade -y
# install java required by databricks-connect
sudo apt install openjdk-8-jre -y
# check java version
java -version
2. miniconda をインストール
2-1. Windows Terminal を再起動後、 1 の手順で作成した環境のコマンドラインシェルを起動後、次のコマンドを実行。
# download miniconda
cd
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
# install miniconda
bash Miniconda3-latest-Linux-x86_64.sh
インストール時の質問に対しては、次のように回答。
# | 質問 | 回答 |
---|---|---|
1 | Do you accept the license terms? | yes |
2 | Miniconda3 will now be installed into this location | ENTER |
3 | Do you wish the installer to initialize Miniconda3 by running conda init? | yes |
# delete miniconda sh file
rm Miniconda3-latest-Linux-x86_64.sh
# create directory for git
mkdir source
3. conda env を作成
3-1. VS Code から、1 の手順で作成した WSL 環境に接続
3-2. Azure DevOps にてクローンする レポジトリーの Repos
-> Files
ページに接続後、clone
を選択
3-3. IDE
にあるClone in VS Code
を選択し、VS Code に画面に切り替わることを確認
3-4. Choose a folder to clone
プロンプトにて、 2 の手順で作成した source
を選択
3-5. Azure DevOps に戻り、Generate Git Credentials
を選択し、Password
の値を取得
3-6. VS Code にて、Password
を入力後、コードがクローンされることを確認
3-7. クローンしたディレクトリを開き、Azure DevOps 上のディレクトリ構成となっていることを確認
-
Do you want to install the recommended extensions for this repository
プロンプトが表示された場合には、install
を選択
クローン完了後、VS Code のターミナルにて、次のコマンドを実行。databricks-connect
のファイルサイズが大きいことでタイムアウトが発生する場合には、pip install
によりdatabricks-connect
を個別にインストールし、pip install -r requirements.txt
によりその他のライブラリをインストールする手順に変更。
# create conda envrioment for databricks connect
conda env create -f environment.yml
# check conda env
conda env list
4. Databricks への接続設定
4-1. VS Code のターミナルにて、次のコマンドを実行。設定値については、ドキュメントを参照。通常の手順では、.databricks-connect
にて接続情報が格納。
# connect to databricks connect conda env
conda activate dbconnect_10_4
# config databricks connect
databricks-connect configure
# test connect to databricks cluster
databricks-connect test