Superset安装

Superset的安装官网上也有比较详细的步骤,参考官方文档。不想踩坑当然推荐还是用docker方式,当然因为Superset本身是用python实现的,对于Python开发者来说,用pypi部署也不是难事,也是一个学习机会。

本文主要是整理了下我部署过程的资料,以供借鉴。

核心步骤不难,主要是各个组件部署在不同的linux环境中,会踩到很多系统组件&动态链接库缺失的问题。

创建Python虚拟环境

我们是在单个机器上部署多个Python服务,所以需要做依赖包的隔离,这里我们采用来管理Python环境。Pyenv:Pyenv安装指引

bash 复制代码
# 安装Python
pyenv install 3.10.14
# 创建虚拟环境
pyenv virtualenv 3.10.14 superset-env
# 激活superset专用python环境
pyenv activate superset-env

安装Superset相关组件

bash 复制代码
# 安装superset本尊
pip install apache-superset
# 安装superset元数据库的连接驱动,如果是mysql
# if failed mysqlclient, then:
# sudo yum install -y python3-devel mysql-devel mysql-server
# 如果都无法解决,试试降级安装pip install mysqlclient==2.1.1
pip install mysqlclient

Superset初始化

编辑初始化配置

先把配置文件写到superset_config.py文件里,后面初始化时会用到这个文件的配置

python 复制代码
from celery.schedules import crontab

# Superset specific config
ROW_LIMIT = 10000

# 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 = ''

# 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 = ''

# 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 * 1

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

# activate Jinja templating
FEATURE_FLAGS = {
  "ENABLE_TEMPLATE_PROCESSING": True,
  "ALERT_REPORTS": True
}

引用初始化配置文件

bash 复制代码
export SUPERSET_CONFIG_PATH=superset_config.py
export FLASK_APP=superset

初始化数据库和元数据

bash 复制代码
# Then, you need to initialize the database:
superset db upgrade
# Create an admin user in your metadata database (use `admin` as username to be able to load the examples)
superset fab create-admin
# Load some data to play with
superset load_examples
# Create default roles and permissions
superset init

启动服务

接下来就可以直接启动服务了,以下我整理的启停脚本:

bash 复制代码
#!/bin/bash
# superset_start.sh
pyenv activate superset-env
export SUPERSET_CONFIG_PATH=superset_config.py
export FLASK_APP=superset

function start() {
  python -m gunicorn --workers 2 --timeout 120 --bind 0.0.0.0:8088 "superset.app:create_app()" --daemon

}

function stop() {
  local name="superset.app"
  pid=$(pgrep -f $name)
  if [ -z "$pid" ]; then
    echo "$ENV $name is not running"
  else
    echo "Stopping $ENV $name, pid=$pid"
    kill $pid
    sleep 3
  fi
}

case $1 in
  start)
    start
  ;;
  stop)
    stop
  ;;
  restart)
    stop
    start
  ;;
  check)
    ps -ef |grep superset.app
  ;;
  *)
    echo "Usage: $0 {start|stop|restart|check}"
esac
相关推荐
qq_4138474012 小时前
HTML怎么限制输入字符数_HTML input maxlength属性用法【详解】
jvm·数据库·python
u01091476019 小时前
CSS组件库如何快速扩展_通过Sass @extend继承基础布局
jvm·数据库·python
baidu_3409988219 小时前
Golang怎么用go-noescape优化性能_Golang如何使用编译器指令控制逃逸分析行为【进阶】
jvm·数据库·python
m0_6784854519 小时前
如何利用虚拟 DOM 实现无痕刷新?基于 VNode 对比的状态保持技巧
jvm·数据库·python
qq_3422958219 小时前
CSS如何实现透明背景效果_通过RGBA色彩模式控制透明度
jvm·数据库·python
TechWayfarer19 小时前
知乎/微博的IP属地显示为什么偶尔错误?用IP归属地查询平台自检工具3步验证
网络·python·网络协议·tcp/ip·网络安全
Greyson120 小时前
CSS如何处理超长文本换行问题_结合word-wrap属性
jvm·数据库·python
justjinji20 小时前
如何批量更新SQL数据表_使用UPDATE JOIN语法提升效率
jvm·数据库·python
小江的记录本20 小时前
【网络安全】《网络安全常见攻击与防御》(附:《六大攻击核心特性横向对比表》)
java·网络·人工智能·后端·python·安全·web安全
贵沫末20 小时前
python——打包自己的库并安装
开发语言·windows·python