0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Supersetインストール [Windows編]

Posted at

はじめに

先日、現場でApache SupersetをWindowsにインストールしました。若干沼ってしまったので記事化して整理しておこうと思います。

検証環境

OS: Windows 10 22H2
DB: PostgreSQL 14.9
Python: 3.11.8

remmina_windows_192.168.11.77_20241127-144333.png

(このPC、父から半年以上借りっぱなしかつ放置...)

インストール手順

事前準備

C++ビルド環境の準備

C言語のビルド環境を準備する必要があります。
公式ページにはしれっとgcc(GNU C Compiler)のインストール必要だよ、ってprerequireにかかれているのですが、Windowsの記載はありません。
WindowsではMS社がビルドツールを提供していますのでそれを使用します。まずは下記サイトからインストール用のプログラムをダウンロードします。

remmina_windows_192.168.11.77_20241127-145808.png

これを入れないと、Supersetのpipインストール時にエラー出ます。
具体的にはpython-geohashという関連モジュールで失敗します。

ダウンロードしたインストーラを起動します。

remmina_windows_192.168.11.77_20241127-145912.png

remmina_windows_192.168.11.77_20241127-145920.png

インストールするプログラムをチェックします。

  1. まずはチェックは、【C++によるデスクトップ環境】にチェック
  2. 次に下記をチェック。 (おそらくデフォルトでチェックされます)
    1. MSVC v(番号) - VS 20XX C++ x64/x86ビルド...
    2. Windows XX SDK (番号)
    3. Windows用C++ CMakeツール
    4. ツールのコア機能のテスト - ビルドツール
    5. C++ AddressSanitizer

ちなみにOSはWindows10ですが、SDKはWindows 11でOKです。
おそらくここのサイトのものだと思われるのですが、きちんと下位バージョンもサポートされています。
Screenshot from 2024-11-28 00-22-45.png

remmina_windows_192.168.11.77_20241127-150029.png

インストールした後に再起動します。

remmina_windows_192.168.11.77_20241127-152525.png

Python仮想環境構築

仮想環境の作成とpip, setuptoolsのアップデートを行う。

> cd c:\your\project\path\
> python -m venv superset
> .\superset\Script\Activate.ps1
(venv)> python -m pip install --upgrade setuptools pip

remmina_windows_192.168.11.77_20241128-104825.png

Superset

supersetインストール

(venv)> pip install apache-superset
(venv)> pip install psycopg2-binary
(venv)> pip install python-dotenv

remmina_windows_192.168.11.77_20241128-105440.png

remmina_windows_192.168.11.77_20241128-110106.png

設定ファイルの作成

まずは環境変数を格納するファイル【.env】を作成します。

# secret_key
SUPERSET_SECRET_KEY='0123456789'
# db connection info
SUPERSET_DB_PROTOCOL='postgresql+psycopg2'
SUPERSET_DB_NAME='superset_config'
SUPERSET_DB_HOST='127.0.0.1'
SUPERSET_DB_PORT='5432'
SUPERSET_DB_USER='postgres'
SUPERSET_DB_PASS='your db role password'
SUPERSET_DATABASE_URI='${SUPERSET_DB_PROTOCOL}://${SUPERSET_DB_USER}:${SUPERSET_DB_PASS}@${SUPERSET_DB_HOST}:${SUPERSET_DB_PORT}/${SUPERSET_DB_NAME}'

remmina_windows_192.168.11.77_20241128-113616.png

SQLAlchemyのエンジン用URLを環境変数SUPERSET_DATABASE_URIで作成しています。

次に、supersetの設定ファイルである【superset_config.py】を作成します。

import os
from dotenv import load_dotenv

load_dotenv()

# Superset specific config
ROW_LIMIT = 5000

# Flask App Builder configuration
# Your App secret key will be used for securely signing the session cookie
# and encrypting sensitive information on the database
# Make sure you are changing this key for your deployment with a strong key.
# Alternatively you can set it with `SUPERSET_SECRET_KEY` environment variable.
# You MUST set this for production environments or the server will refuse
# to start and you will see an error in the logs accordingly.
SECRET_KEY = os.getenv('SUPERSET_SECRET_KEY')

# The SQLAlchemy connection string to your database backend
# This connection defines the path to the database that stores your
# superset metadata (slices, connections, tables, dashboards, ...).
# Note that the connection information to connect to the datasources
# you want to explore are managed directly in the web UI
# The check_same_thread=false property ensures the sqlite client does not attempt
# to enforce single-threaded access, which may be problematic in some edge cases
SQLALCHEMY_DATABASE_URI = os.getenv('SUPERSET_DATABASE_URI')

# Flask-WTF flag for CSRF
WTF_CSRF_ENABLED = True
# Add endpoints that need to be exempt from CSRF protection
WTF_CSRF_EXEMPT_LIST = ['']
# A CSRF token that expires in 1 year
WTF_CSRF_TIME_LIMIT = 60 * 60 * 24 * 365

# Set this API key to enable Mapbox visualizations
MAPBOX_API_KEY = ''

# Babel setting
BABEL_DEFAULT_LOCALE = 'en'
BABEL_DEFAULT_TIMEZONE = 'Asia/Tokyo'

remmina_windows_192.168.11.77_20241128-110458.png

DB作成

Superset情報格納用のDatabaseを作成します。
ちなみに記事内ではPostgreSQLを使用していますが、SQLiteや別のDBでも大丈夫です。

> createdb -U postgres -h localhost --template=template0 superset_config

remmina_windows_192.168.11.77_20241128-112643.png

サービス起動

> cd .\path\to\project\
> .\venv\Script\Activate.ps1
(venv)> $ENV:FLASK_APP='superset'
(venv)> $ENV:SUPERSET_CONFIG_PATH='\path\to\project\superset_config.py'
(venv)> superset db upgrade
(venv)> superset fab create-admin
(venv)> superset load_examples
(venv)> superset init

remmina_windows_192.168.11.77_20241128-113352.png

remmina_windows_192.168.11.77_20241128-113740.png

remmina_windows_192.168.11.77_20241128-113927.png

remmina_windows_192.168.11.77_20241128-114153.png

remmina_windows_192.168.11.77_20241128-114343.png

起動確認

上記手順が問題なくできていたら無事に立ち上がるはずです。
下記コマンドを実行して立ち上げてみましょう。
(別のPCからもアクセスできるはずです)

(venv)> superset run -h 0.0.0.0 -p 8088 --with-threads --reload --debugger

無事、別PCからアクセスできました。

スクリーンショット 2024-11-28 20.47.01.png

スクリーンショット 2024-11-28 20.47.13.png

サービスが問題なく立ち上がっていて、別PCからアクセスできない場合はファイアウォール設定を見直して接続できるようになるかもしれないです。

最後に

こういったサービス系のツールはLinuxやUnix系のOSでないとインストール手順が書かれていないですね。
(あえてWindowsでやる必要がないといえばないのでしょうけど)
手順では簡単にやれているように見えますが、実際にはMS社のBuild Toolsの存在を知らなかったので、この部分で結構手こずりました...
この記事がどなたかのお役に立てば、と思います。

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?