共计 3632 个字符,预计需要花费 10 分钟才能阅读完成。
应用 Docker 装置 Superset
- 第一步须要装置 Docker Engine 和 Docker Compose,在 Mac 上,能够应用 Docker Desktop,其中包含了 Docker Engine 和 Docker Compose。装置好 Docker 后,须要进入 Docker 设置将默认的内存设置为 6 GB
- 克隆 Superset 的仓库到本地:
$ git clone https://github.com/apache/superset.git
- 将仓库拷贝到本地后,执行上面两条语句:
docker-compose -f docker-compose-non-dev.yml pull
docker-compose -f docker-compose-non-dev.yml up
对于 docker compose
的 CLI 命令参数与相干的解释,参考 Overview of docker-compose CLI.
如果须要指定版本的 superset,须要在这一步指定,办法是在后面加上 tag 参数:
git checkout 1.4.0
TAG=1.4.0 docker-compose -f docker-compose-non-dev.yml pull
TAG=1.4.0 docker-compose -f docker-compose-non-dev.yml up
在启动日志中,可能会看到检测到默认的 secret string,提醒咱们应用本人生成的字符,还贴心的给了咱们生成示例。
openssl rand -base64 42
其次,superset_worker 提醒咱们在应用超级用户启动 worker, 并提醒:
You're running the worker with superuser privileges:
this is absolutely not recommended!"
Please specify a different user using the --uid option.
User information: uid=0 euid=0 gid=0 egid=0
咱们之后再来看这个问题。
同时在 superset_init 中,咱们还看到它的初始化配置文件地址:
/app/docker/pythonpath_dev/superset_config.py
此时,咱们其实曾经能够关上 http://0.0.0.0:8088
拜访 superset 的服务了, 默认的用户名和明码都是 admin
。
Windows 应用 WSL 装置
# 装置依赖
sudo apt-get install build-essential libssl-dev libffi-dev python-dev python-pip libsasl2-dev libldap2-dev
# 配置 python 和 pip 后,装置虚拟环境
pip install virtualenv
python3 -m venv venv
. venv/bin/activate
# 装置 superset
pip install apache-superset
# 初始化 db
superset db upgrade
# 设置管理员账号
export FLASK_APP=superset
superset fab create-admin
# 加载例子,可选
superset load_examples
# 初始化
superset init
# 启动
superset run -p 8088 --with-threads --reload --debugger
# 应用 wsgi 服务
# 装置相干服务
pip install gunicorn
pip install gevent
# 启动
gunicorn -w 10 -k gevent --timeout 120 -b 0.0.0.0:7668 --limit-request-line 0 --limit-request-field_size 0 "superset.app:create_app()"
# 连贯 Oracle,可参考后续章节的内容
配置 Superset
配置 superset 须要应用一个配置文件,即下面咱们日志中看到过的那个文件,它须要被增加到你的 PYTHONPATH 中。
看一下这个文件中的内容:
# in superset_config.py
# Superset specific config
ROW_LIMIT = 5000
SUPERSET_WEBSERVER_PORT = 8088
# Flask App Builder configuration
# Your App secret key
SECRET_KEY = '\2\1thisismyscretkey\1\2\e\y\y\h'
# 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
SQLALCHEMY_DATABASE_URI = 'sqlite:////path/to/superset.db'
# 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 = ''
你能够在这里找到所有可选的配置增加到配置文件中。
连贯数据库
因为我须要测试的数据库是 Oracle,而 superset 装置后外部并不会带有数据库驱动,咱们须要手动装置,办法是在仓库外部的 docker 目录上面,新建 requirements-local.txt
文件,并填入包的名字,如对于 oracle 是:
cx_Oracle
而后关掉 superset 服务,从新生成镜像再启动:
docker-compose build --force-rm
docker-compose up
连贯 oracle,只装置 cx_Oracle 是不够的,可能还须要有 instantclient 客户端。
在 web 界面增加数据库可能会看到这个谬误:
Cannot locate a 64-bit Oracle Client library: "libclntsh.so: cannot open shared object file: No such file or directory". See https://cx-oracle.readthedocs.io/en/latest/user_guide/installation.html for help
(Background on this error at: http://sqlalche.me/e/13/4xp6)
起因是没有配置 Oracle 的 instant client,须要在环境中装置才能够连贯 Oracle。
# 胜利启动后,还须要装置 cx_Oracle 和 instant client 才能够连贯 oracle
# 首先须要下载 instant client, 这里不再赘述,去 Oracle 官网下载对应版本即可,我下载的版本是 instantclient-basic-linux.x64-12.2.0.1.0.zip
apt-get update && apt-get install -y libaio1 # 装依赖
Unzip instantclient-basic-linux.x64-12.2.0.1.0.zip # 解压
# 删除不须要的文件
cd /opt/oracle/instantclient* \
rm -f *jdbc* *occi* *mysql* *README *jar uidrvci genezi adrci \
echo /instantclient* > /etc/ld.so.conf.d/oracle-instantclient.conf \
# 配置 tnsnames
&& ldconfig \
&& mkdir -p instantclient_12_2/network/admin \
&& cp tnsnames.ora instantclient_12_2/network/admin/ \
&& cp /sqlnet.ora instantclient_12_2/network/admin/
另外,如果应用 tnsnames, tnsnames.ora 文件中的数据库地址配置可能在 wsl 中无奈连贯,这里折腾了一会,在宿主机上 ping 该地址失去了一个 domain.org 模式的地址,从新填入解决了。