LoginSignup
0
0

More than 1 year has passed since last update.

Databricks Connect(Python)環境を Windows Subsystem for Linux (WSL)上に特定の目的のみに利用する Linux 環境に構築する手順

Last updated at Posted at 2022-10-01

概要

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"

image.png

# Update wsl version to 2
wsl --set-version $src_wsl_distro_name 2

image.png

$wsl_file_name = $src_wsl_distro_name + ".tar"
wsl --export $src_wsl_distro_name $wsl_file_name

image.png

image.png

# Import wsl distro_name
wsl --import $tgt_wsl_distro_name $tgt_wsl_distro_name $wsl_file_name

image.png

# Check wsl dstro list
wsl -l

# login to wsl distro
wsl -d $tgt_wsl_distro_name -u root

image.png

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

image.png

# logout
exit

image.png

# Delete distro file
Remove-Item $wsl_file_name
# reboot and re-login
wsl -t $tgt_wsl_distro_name
wsl -d $tgt_wsl_distro_name

image.png

sudo apt update && sudo apt upgrade -y

image.png

# install java required by databricks-connect
sudo apt install openjdk-8-jre -y

image.png

# check java version
java -version

image.png

2. miniconda をインストール

2-1. Windows Terminal を再起動後、 1 の手順で作成した環境のコマンドラインシェルを起動後、次のコマンドを実行。

# download miniconda
cd
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh

image.png

# install miniconda
bash Miniconda3-latest-Linux-x86_64.sh

image.png

インストール時の質問に対しては、次のように回答。

# 質問 回答
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

image.png

image.png

# delete miniconda sh file
rm Miniconda3-latest-Linux-x86_64.sh

image.png

# create directory for git
mkdir source

image.png

3. conda env を作成

3-1. VS Code から、1 の手順で作成した WSL 環境に接続

image.png

3-2. Azure DevOps にてクローンする レポジトリーの Repos -> Filesページに接続後、cloneを選択

image.png

3-3. IDEにあるClone in VS Codeを選択し、VS Code に画面に切り替わることを確認

image.png

3-4. Choose a folder to clone プロンプトにて、 2 の手順で作成した source を選択

image.png

3-5. Azure DevOps に戻り、Generate Git Credentialsを選択し、Password の値を取得

image.png

3-6. VS Code にて、Password を入力後、コードがクローンされることを確認

image.png

3-7. クローンしたディレクトリを開き、Azure DevOps 上のディレクトリ構成となっていることを確認

image.png

image.png

  1. Do you want to install the recommended extensions for this repository プロンプトが表示された場合には、install を選択

image.png

クローン完了後、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

image.png

# check conda env
conda env list

image.png

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

image.png

image.png

# test connect to databricks cluster
databricks-connect test

image.png

image.png

4-2. VS Code の テスト タブ にて、test_append_to_table のテストを実行し、正常終了することを確認。

image.png

4-3. VS Code にて、Ctrl+Shift+P -> Python:Select Interpreter (画像の下の項目)を選択後、作成した Conda 環境(dbconnect_10_4) を選択。Python library gaarukot wokakuni

image.png

image.png

4-4. タスクバーにある VS Code アイコンを右クリックし、現在開いているディレクトリ(例:databricks_development_practices[wsl: databrikcs-connect])の一覧にピン留めする を選択

image.png

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0