Superset是Apache下的数据可视化应用, 支持多种数据源连接, 用于制作图表,构造看板,支持用户权限管理,数据导出等功能
github地址: github.com/apache/supe…
官方文档地址: superset.apache.org/docs/intro
1.安装Conda
Conda是管理Python环境的工具,可以方便的创建、切换、删除不同版本的Python环境
conda下载页面: https://www.anaconda.com/download
下载安装脚本:
wget https://repo.anaconda.com/archive/Anaconda3-2024.02-1-Linux-x86_64.sh
执行安装脚本: bash Anaconda3-2024.02-1-Linux-x86_64.sh
阅读协议后输入 yes ,选择安装目录,默认是家目录下的anaconda3目录
选择是否默认激活base环境
打开新的命令行窗口, 发现提示符多了个base前缀,默认环境为base环境,每次打开命令行窗口自动切换到base环境
取消每次打开控制台自动进入base环境: conda config --set auto_activate_base false
查看已安装环境: conda env list
2.配置conda国内源
默认conda源速度较慢,配置国内源可以显著提高下载速度
使用 conda config --show channels 显示现有源信息
添加清华源:
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/
conda config --set show_channel_urls yes
或者直接编辑家目录下的 .condarc 文件
channels:
- defaults
custom_channels:
conda-forge: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
msys2: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
bioconda: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
menpo: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
pytorch: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
simpleitk: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
default_channels:
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/r
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/msys2
2.安装python环境
安装依赖
yum install -y python-setuptools
yum install -y gcc gcc-c++ libffi-devel python-devel python-pip python-wheel openssl-devel cyrus-sasl-devel openldap-devel
安装Python3.7版本的环境,并命名为 "superset"
conda create -n superset python=3.7
3.安装superset
切换到刚创建的conda环境:
conda activate superset
安装1.2版本的superset:
pip install apache-superset==1.2.0
默认数据源下载数据慢,可以用 -i 参数指定国内源
清华源: pypi.tuna.tsinghua.edu.cn/simple
阿里源: mirrors.aliyun.com/pypi/simple…
腾讯源: mirrors.cloud.tencent.com/pypi/simple
豆瓣源: pypi.douban.com/simple/
解决源不受信任问题需要在首次使用源的时候添加 --trusted-host 参数
完整命令为:
pip install apache-superset==1.2.0 -i https://pypi.tuna.tsinghua.edu.cn/simple --trusted-host pypi.tuna.tsinghua.edu.cn
安装过程中遇到的包版本不兼容导致的报错以及解决方法:
sqlalchemy:
ERROR: Ignored the following yanked versions: 0.36.6, 0.36.7, 0.36.8, 0.37.0, 0.37.1, 0.39.0b2342
ERROR: Ignored the following versions that require a different python version: 0.11.0 Requires-Python >=3.8; 0.12.0 Requires-Python >=3.8; 0.13.0 Requires-Python >=3.8; 1.0.0 Requires-Python >=3.8; 1.0.1 Requires-Python >=3.8; 1.0.6 Requires-Python >=3.8; 1.0.6rc1 Requires-Python >=3.8; 1.0.7 Requires-Python >=3.8; 1.0.8 Requires-Python >=3.8; 1.1.2 Requires-Python >=3.8; 1.2.0 Requires-Python >=3.8; 1.2.1 Requires-Python >=3.8; 1.4.0 Requires-Python >=3.8; 1.4.0rc0 Requires-Python >=3.8; 1.4.1 Requires-Python >=3.8; 1.4.2 Requires-Python >=3.8; 1.4.3 Requires-Python >=3.8; 1.4.4 Requires-Python >=3.8; 1.5.0 Requires-Python >=3.8; 1.5.0rc0 Requires-Python >=3.8; 1.5.1 Requires-Python >=3.8; 1.5.2 Requires-Python >=3.8; 1.5.3 Requires-Python >=3.8; 13.0.0 Requires-Python >=3.8; 14.0.0 Requires-Python >=3.8; 14.0.1 Requires-Python >=3.8; 14.0.2 Requires-Python >=3.8; 15.0.0 Requires-Python >=3.8; 15.0.1 Requires-Python >=3.8; 15.0.2 Requires-Python >=3.8; 16.0.0 Requires-Python >=3.8; 2.0.0 Requires-Python >=3.8; 2.0.0 Requires-Python ~=3.8; 2.0.0rc0 Requires-Python >=3.8; 2.0.0rc1 Requires-Python >=3.8; 2.0.1 Requires-Python >=3.8; 2.0.1 Requires-Python ~=3.8; 2.0.2 Requires-Python >=3.8; 2.0.3 Requires-Python >=3.8; 2.1.0 Requires-Python >=3.9; 2.1.0 Requires-Python ~=3.8; 2.1.0rc0 Requires-Python >=3.9; 2.1.1 Requires-Python >=3.9; 2.1.1 Requires-Python ~=3.8; 2.1.1rc1 Requires-Python ~=3.8; 2.1.1rc2 Requires-Python ~=3.8; 2.1.1rc3 Requires-Python ~=3.8; 2.1.2 Requires-Python >=3.9; 2.1.2 Requires-Python ~=3.8; 2.1.3 Requires-Python >=3.9; 2.1.3 Requires-Python ~=3.8; 2.1.4 Requires-Python >=3.9; 2.2.0 Requires-Python >=3.8; 2.2.0 Requires-Python >=3.9; 2.2.0rc0 Requires-Python >=3.9; 2.2.1 Requires-Python >=3.9; 2.2.2 Requires-Python >=3.9; 2.3.0 Requires-Python >=3.8; 2.3.1 Requires-Python >=3.8; 2.3.2 Requires-Python >=3.8; 2.3.3 Requires-Python >=3.8; 3.0.0 Requires-Python >=3.8; 3.0.0 Requires-Python ~=3.9; 3.0.0rc01 Requires-Python ~=3.9; 3.0.0rc2 Requires-Python ~=3.9; 3.0.0rc3 Requires-Python ~=3.9; 3.0.0rc4 Requires-Python ~=3.9; 3.0.1 Requires-Python >=3.8; 3.0.1 Requires-Python ~=3.9; 3.0.2 Requires-Python >=3.8; 3.0.2 Requires-Python ~=3.9; 3.0.3 Requires-Python >=3.8; 3.0.3 Requires-Python ~=3.9; 3.0.4 Requires-Python ~=3.9; 3.1.0 Requires-Python ~=3.9; 3.1.0rc001 Requires-Python ~=3.9; 3.1.0rc2 Requires-Python ~=3.9; 3.1.0rc3 Requires-Python ~=3.9; 3.1.0rc4 Requires-Python ~=3.9; 3.1.1 Requires-Python ~=3.9; 3.1.2 Requires-Python ~=3.9; 3.5 Requires-Python >=3.8; 3.5.1 Requires-Python >=3.8; 3.5.2 Requires-Python >=3.8; 3.6 Requires-Python >=3.8; 4.0.0 Requires-Python ~=3.9; 4.0.0rc1 Requires-Python ~=3.9; 4.0.0rc2 Requires-Python ~=3.9; 4.12.0 Requires-Python >=3.8; 4.13.0 Requires-Python >=3.8; 4.14.0 Requires-Python >=3.8; 4.15.0 Requires-Python >=3.8; 4.15.1 Requires-Python >=3.8; 4.15.2 Requires-Python >=3.8; 4.16.0 Requires-Python >=3.8; 4.17.0 Requires-Python >=3.8; 4.17.1 Requires-Python >=3.8; 4.17.2 Requires-Python >=3.8; 4.18.0 Requires-Python >=3.8; 4.18.1 Requires-Python >=3.8; 4.19.0 Requires-Python >=3.8; 4.20.0 Requires-Python >=3.8; 4.7.0 Requires-Python >=3.8; 4.8.0 Requires-Python >=3.8; 4.9.0 Requires-Python >=3.8; 5.1.0b1 Requires-Python >=3.8; 5.1.0b2 Requires-Python >=3.8; 5.1.0b3 Requires-Python >=3.8; 5.1.0b4 Requires-Python >=3.8; 5.3.1 Requires-Python >=3.8; 5.3.4 Requires-Python >=3.8; 5.3.5 Requires-Python >=3.8; 5.3.6 Requires-Python >=3.8; 5.4.0 Requires-Python >=3.8; 5.4.0rc1 Requires-Python >=3.8; 5.4.0rc2 Requires-Python >=3.8; 6.1.0 Requires-Python >=3.8
ERROR: Could not find a version that satisfies the requirement sqlalchemy-utils<0.37,>=0.36.6 (from apache-superset) (from versions: 0.1, 0.2, 0.3, 0.5, 0.6, 0.7, 0.7.2, 0.7.3, 0.7.4, 0.7.5, 0.7.6, 0.7.7, 0.8.0, 0.8.1, 0.8.2, 0.8.3, 0.8.4, 0.9, 0.9.1, 0.10.0, 0.11.0, 0.12.0, 0.12.1, 0.12.2, 0.12.3, 0.12.4, 0.12.5, 0.13.0, 0.13.1, 0.13.2, 0.13.3, 0.14.0, 0.14.1, 0.14.3, 0.14.4, 0.14.5, 0.14.6, 0.14.7, 0.15.0, 0.15.1, 0.16.0, 0.16.1, 0.16.2, 0.16.3, 0.16.4, 0.16.5, 0.16.6, 0.16.7, 0.16.8, 0.16.9, 0.16.10, 0.16.11, 0.16.12, 0.16.13, 0.16.14, 0.16.16, 0.16.17, 0.16.18, 0.16.19, 0.16.20, 0.16.21, 0.16.22, 0.16.23, 0.16.24, 0.16.25, 0.19.0, 0.20.0, 0.22.0, 0.22.1, 0.23.0, 0.23.1, 0.23.2, 0.23.3, 0.23.5, 0.24.0, 0.24.1, 0.24.2, 0.24.3, 0.24.4, 0.25.0, 0.25.1, 0.25.2, 0.25.3, 0.25.4, 0.26.0, 0.26.2, 0.26.3, 0.26.5, 0.26.6, 0.26.7, 0.26.8, 0.26.9, 0.26.10, 0.26.11, 0.26.12, 0.26.13, 0.26.14, 0.26.15, 0.26.16, 0.26.17, 0.27.0, 0.27.1, 0.27.2, 0.27.3, 0.27.4, 0.27.5, 0.27.6, 0.27.7, 0.27.8, 0.27.9, 0.27.10, 0.27.11, 0.28.0, 0.28.1, 0.28.2, 0.28.3, 0.29.0, 0.29.1, 0.29.2, 0.29.3, 0.29.4, 0.29.5, 0.29.6, 0.29.7, 0.29.8, 0.29.9, 0.30.0, 0.30.1, 0.30.2, 0.30.3, 0.30.4, 0.30.5, 0.30.6, 0.30.7, 0.30.8, 0.30.9, 0.30.10, 0.30.11, 0.30.12, 0.30.13, 0.30.14, 0.30.15, 0.30.16, 0.30.17, 0.31.0, 0.31.1, 0.31.2, 0.31.3, 0.31.4, 0.31.5, 0.31.6, 0.32.0, 0.32.1, 0.32.2, 0.32.3, 0.32.4, 0.32.5, 0.32.6, 0.32.7, 0.32.8, 0.32.9, 0.32.11, 0.32.12, 0.32.13, 0.32.14, 0.32.15, 0.32.16, 0.32.17, 0.32.18, 0.32.19, 0.32.21, 0.33.0, 0.33.1, 0.33.2, 0.33.3, 0.33.4, 0.33.5, 0.33.6, 0.33.8, 0.33.9, 0.33.10, 0.33.11, 0.34.0, 0.34.1, 0.34.2, 0.35.0, 0.36.0, 0.36.1, 0.36.2, 0.36.3, 0.36.4, 0.36.5, 0.37.2, 0.37.3, 0.37.4, 0.37.5, 0.37.6, 0.37.7, 0.37.8, 0.37.9, 0.38.0, 0.38.1, 0.38.2, 0.38.3, 0.39.0, 0.40.0, 0.41.0, 0.41.1, 0.41.2)
ERROR: No matching distribution found for sqlalchemy-utils<0.37,>=0.36.6
pip install sqlalchemy-utils==0.36.8 -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install sqlalchemy-utils==0.36.8 -i https://pypi.tuna.tsinghua.edu.cn/simple
MarkupSafe:
Traceback (most recent call last):
File "/home/madao/anaconda3/envs/py37/bin/superset", line 5, in <module>
from superset.cli import superset
File "/home/madao/anaconda3/envs/py37/lib/python3.7/site-packages/superset/__init__.py", line 18, in <module>
from flask import current_app, Flask
File "/home/madao/anaconda3/envs/py37/lib/python3.7/site-packages/flask/__init__.py", line 14, in <module>
from jinja2 import escape
File "/home/madao/anaconda3/envs/py37/lib/python3.7/site-packages/jinja2/__init__.py", line 12, in <module>
from .environment import Environment
File "/home/madao/anaconda3/envs/py37/lib/python3.7/site-packages/jinja2/environment.py", line 25, in <module>
from .defaults import BLOCK_END_STRING
File "/home/madao/anaconda3/envs/py37/lib/python3.7/site-packages/jinja2/defaults.py", line 3, in <module>
from .filters import FILTERS as DEFAULT_FILTERS # noqa: F401
File "/home/madao/anaconda3/envs/py37/lib/python3.7/site-packages/jinja2/filters.py", line 13, in <module>
from markupsafe import soft_unicode
ImportError: cannot import name 'soft_unicode' from 'markupsafe' (/home/madao/anaconda3/envs/py37/lib/python3.7/site-packages/markupsafe/__init__.py)
pip install MarkupSafe==2.0.1
importlib-metadata:
Traceback (most recent call last):
File "/home/madao/anaconda3/envs/py37/bin/superset", line 5, in <module>
from superset.cli import superset
File "/home/madao/anaconda3/envs/py37/lib/python3.7/site-packages/superset/__init__.py", line 21, in <module>
from superset.app import create_app
File "/home/madao/anaconda3/envs/py37/lib/python3.7/site-packages/superset/app.py", line 29, in <module>
from superset.extensions import (
File "/home/madao/anaconda3/envs/py37/lib/python3.7/site-packages/superset/extensions.py", line 104, in <module>
celery_app = celery.Celery()
File "/home/madao/anaconda3/envs/py37/lib/python3.7/site-packages/celery/local.py", line 509, in __getattr__
module = __import__(self._object_origins[name], None, None, [name])
File "/home/madao/anaconda3/envs/py37/lib/python3.7/site-packages/celery/app/__init__.py", line 5, in <module>
from celery import _state
File "/home/madao/anaconda3/envs/py37/lib/python3.7/site-packages/celery/_state.py", line 17, in <module>
from celery.utils.threads import LocalStack
File "/home/madao/anaconda3/envs/py37/lib/python3.7/site-packages/celery/utils/__init__.py", line 19, in <module>
from .nodenames import nodename, nodesplit, worker_direct
File "/home/madao/anaconda3/envs/py37/lib/python3.7/site-packages/celery/utils/nodenames.py", line 9, in <module>
from kombu.entity import Exchange, Queue
File "/home/madao/anaconda3/envs/py37/lib/python3.7/site-packages/kombu/entity.py", line 9, in <module>
from .serialization import prepare_accept_content
File "/home/madao/anaconda3/envs/py37/lib/python3.7/site-packages/kombu/serialization.py", line 456, in <module>
for ep, args in entrypoints('kombu.serializers'): # pragma: no cover
File "/home/madao/anaconda3/envs/py37/lib/python3.7/site-packages/kombu/utils/compat.py", line 93, in entrypoints
for ep in importlib_metadata.entry_points().get(namespace, [])
AttributeError: 'EntryPoints' object has no attribute 'get'
pip install importlib-metadata==2.1.1
cryptography:
Traceback (most recent call last):
File "/home/madao/anaconda3/envs/py37/bin/superset", line 5, in <module>
from superset.cli import superset
File "/home/madao/anaconda3/envs/py37/lib/python3.7/site-packages/superset/__init__.py", line 21, in <module>
from superset.app import create_app
File "/home/madao/anaconda3/envs/py37/lib/python3.7/site-packages/superset/app.py", line 46, in <module>
from superset.security import SupersetSecurityManager
File "/home/madao/anaconda3/envs/py37/lib/python3.7/site-packages/superset/security/__init__.py", line 17, in <module>
from superset.security.manager import SupersetSecurityManager # noqa: F401
File "/home/madao/anaconda3/envs/py37/lib/python3.7/site-packages/superset/security/manager.py", line 53, in <module>
from superset.utils.core import DatasourceName, RowLevelSecurityFilterType
File "/home/madao/anaconda3/envs/py37/lib/python3.7/site-packages/superset/utils/core.py", line 71, in <module>
from cryptography.hazmat.backends.openssl.x509 import _Certificate
ModuleNotFoundError: No module named 'cryptography.hazmat.backends.openssl.x509'
pip install cryptography==3.2.1
Markdown:
logging was configured successfully
2024-04-30 00:41:07,621:INFO:superset.utils.logging_configurator:logging was configured successfully
2024-04-30 00:41:07,640:INFO:root:Configured event logger of type <class 'superset.utils.log.DBEventLogger'>
/home/madao/anaconda3/envs/py37/lib/python3.7/site-packages/flask_caching/__init__.py:120: UserWarning: Flask-Caching: CACHE_TYPE is set to null, caching is effectively disabled.
"Flask-Caching: CACHE_TYPE is set to null, "
No PIL installation found
2024-04-30 00:41:07,860:INFO:superset.utils.screenshots:No PIL installation found
Failed to create app
Traceback (most recent call last):
File "/home/madao/anaconda3/envs/py37/lib/python3.7/site-packages/superset/app.py", line 63, in create_app
app_initializer.init_app()
File "/home/madao/anaconda3/envs/py37/lib/python3.7/site-packages/superset/app.py", line 567, in init_app
self.init_app_in_ctx()
File "/home/madao/anaconda3/envs/py37/lib/python3.7/site-packages/superset/app.py", line 536, in init_app_in_ctx
self.configure_data_sources()
File "/home/madao/anaconda3/envs/py37/lib/python3.7/site-packages/superset/app.py", line 583, in configure_data_sources
ConnectorRegistry.register_sources(module_datasource_map)
File "/home/madao/anaconda3/envs/py37/lib/python3.7/site-packages/superset/connectors/connector_registry.py", line 40, in register_sources
module_obj = __import__(module_name, fromlist=class_names)
File "/home/madao/anaconda3/envs/py37/lib/python3.7/site-packages/superset/connectors/sqla/__init__.py", line 17, in <module>
from . import models, views
File "/home/madao/anaconda3/envs/py37/lib/python3.7/site-packages/superset/connectors/sqla/views.py", line 34, in <module>
from superset.connectors.base.views import DatasourceModelView
File "/home/madao/anaconda3/envs/py37/lib/python3.7/site-packages/superset/connectors/base/views.py", line 24, in <module>
from superset.views.base import SupersetModelView
File "/home/madao/anaconda3/envs/py37/lib/python3.7/site-packages/superset/views/__init__.py", line 17, in <module>
from . import (
File "/home/madao/anaconda3/envs/py37/lib/python3.7/site-packages/superset/views/alerts.py", line 113, in <module>
class AlertModelView(SupersetModelView): # pylint: disable=too-many-ancestors
File "/home/madao/anaconda3/envs/py37/lib/python3.7/site-packages/superset/views/alerts.py", line 175, in AlertModelView
True,
File "/home/madao/anaconda3/envs/py37/lib/python3.7/site-packages/superset/utils/core.py", line 671, in markdown
"markdown.extensions.codehilite",
File "/home/madao/anaconda3/envs/py37/lib/python3.7/site-packages/markdown/core.py", line 376, in markdown
md = Markdown(**kwargs)
File "/home/madao/anaconda3/envs/py37/lib/python3.7/site-packages/markdown/core.py", line 87, in __init__
configs=kwargs.get('extension_configs', {}))
File "/home/madao/anaconda3/envs/py37/lib/python3.7/site-packages/markdown/core.py", line 113, in registerExtensions
ext = self.build_extension(ext, configs.get(ext, {}))
File "/home/madao/anaconda3/envs/py37/lib/python3.7/site-packages/markdown/core.py", line 143, in build_extension
entry_points = [ep for ep in util.get_installed_extensions() if ep.name == ext_name]
File "/home/madao/anaconda3/envs/py37/lib/python3.7/site-packages/markdown/util.py", line 88, in get_installed_extensions
return metadata.entry_points(group='markdown.extensions')
TypeError: entry_points() got an unexpected keyword argument 'group'
2024-04-30 00:41:08,380:ERROR:superset.app:Failed to create app
Traceback (most recent call last):
File "/home/madao/anaconda3/envs/py37/lib/python3.7/site-packages/superset/app.py", line 63, in create_app
app_initializer.init_app()
File "/home/madao/anaconda3/envs/py37/lib/python3.7/site-packages/superset/app.py", line 567, in init_app
self.init_app_in_ctx()
File "/home/madao/anaconda3/envs/py37/lib/python3.7/site-packages/superset/app.py", line 536, in init_app_in_ctx
self.configure_data_sources()
File "/home/madao/anaconda3/envs/py37/lib/python3.7/site-packages/superset/app.py", line 583, in configure_data_sources
ConnectorRegistry.register_sources(module_datasource_map)
File "/home/madao/anaconda3/envs/py37/lib/python3.7/site-packages/superset/connectors/connector_registry.py", line 40, in register_sources
module_obj = __import__(module_name, fromlist=class_names)
File "/home/madao/anaconda3/envs/py37/lib/python3.7/site-packages/superset/connectors/sqla/__init__.py", line 17, in <module>
from . import models, views
File "/home/madao/anaconda3/envs/py37/lib/python3.7/site-packages/superset/connectors/sqla/views.py", line 34, in <module>
from superset.connectors.base.views import DatasourceModelView
File "/home/madao/anaconda3/envs/py37/lib/python3.7/site-packages/superset/connectors/base/views.py", line 24, in <module>
from superset.views.base import SupersetModelView
File "/home/madao/anaconda3/envs/py37/lib/python3.7/site-packages/superset/views/__init__.py", line 17, in <module>
from . import (
File "/home/madao/anaconda3/envs/py37/lib/python3.7/site-packages/superset/views/alerts.py", line 113, in <module>
class AlertModelView(SupersetModelView): # pylint: disable=too-many-ancestors
File "/home/madao/anaconda3/envs/py37/lib/python3.7/site-packages/superset/views/alerts.py", line 175, in AlertModelView
True,
File "/home/madao/anaconda3/envs/py37/lib/python3.7/site-packages/superset/utils/core.py", line 671, in markdown
"markdown.extensions.codehilite",
File "/home/madao/anaconda3/envs/py37/lib/python3.7/site-packages/markdown/core.py", line 376, in markdown
md = Markdown(**kwargs)
File "/home/madao/anaconda3/envs/py37/lib/python3.7/site-packages/markdown/core.py", line 87, in __init__
configs=kwargs.get('extension_configs', {}))
File "/home/madao/anaconda3/envs/py37/lib/python3.7/site-packages/markdown/core.py", line 113, in registerExtensions
ext = self.build_extension(ext, configs.get(ext, {}))
File "/home/madao/anaconda3/envs/py37/lib/python3.7/site-packages/markdown/core.py", line 143, in build_extension
entry_points = [ep for ep in util.get_installed_extensions() if ep.name == ext_name]
File "/home/madao/anaconda3/envs/py37/lib/python3.7/site-packages/markdown/util.py", line 88, in get_installed_extensions
return metadata.entry_points(group='markdown.extensions')
TypeError: entry_points() got an unexpected keyword argument 'group'
Traceback (most recent call last):
File "/home/madao/anaconda3/envs/py37/bin/superset", line 8, in <module>
sys.exit(superset())
File "/home/madao/anaconda3/envs/py37/lib/python3.7/site-packages/click/core.py", line 829, in __call__
return self.main(*args, **kwargs)
File "/home/madao/anaconda3/envs/py37/lib/python3.7/site-packages/flask/cli.py", line 586, in main
return super(FlaskGroup, self).main(*args, **kwargs)
File "/home/madao/anaconda3/envs/py37/lib/python3.7/site-packages/click/core.py", line 782, in main
rv = self.invoke(ctx)
File "/home/madao/anaconda3/envs/py37/lib/python3.7/site-packages/click/core.py", line 1254, in invoke
cmd_name, cmd, args = self.resolve_command(ctx, args)
File "/home/madao/anaconda3/envs/py37/lib/python3.7/site-packages/click/core.py", line 1297, in resolve_command
cmd = self.get_command(ctx, cmd_name)
File "/home/madao/anaconda3/envs/py37/lib/python3.7/site-packages/flask/cli.py", line 542, in get_command
rv = info.load_app().cli.get_command(ctx, name)
File "/home/madao/anaconda3/envs/py37/lib/python3.7/site-packages/flask/cli.py", line 381, in load_app
app = call_factory(self, self.create_app)
File "/home/madao/anaconda3/envs/py37/lib/python3.7/site-packages/flask/cli.py", line 119, in call_factory
return app_factory()
File "/home/madao/anaconda3/envs/py37/lib/python3.7/site-packages/superset/app.py", line 70, in create_app
raise ex
File "/home/madao/anaconda3/envs/py37/lib/python3.7/site-packages/superset/app.py", line 63, in create_app
app_initializer.init_app()
File "/home/madao/anaconda3/envs/py37/lib/python3.7/site-packages/superset/app.py", line 567, in init_app
self.init_app_in_ctx()
File "/home/madao/anaconda3/envs/py37/lib/python3.7/site-packages/superset/app.py", line 536, in init_app_in_ctx
self.configure_data_sources()
File "/home/madao/anaconda3/envs/py37/lib/python3.7/site-packages/superset/app.py", line 583, in configure_data_sources
ConnectorRegistry.register_sources(module_datasource_map)
File "/home/madao/anaconda3/envs/py37/lib/python3.7/site-packages/superset/connectors/connector_registry.py", line 40, in register_sources
module_obj = __import__(module_name, fromlist=class_names)
File "/home/madao/anaconda3/envs/py37/lib/python3.7/site-packages/superset/connectors/sqla/__init__.py", line 17, in <module>
from . import models, views
File "/home/madao/anaconda3/envs/py37/lib/python3.7/site-packages/superset/connectors/sqla/views.py", line 34, in <module>
from superset.connectors.base.views import DatasourceModelView
File "/home/madao/anaconda3/envs/py37/lib/python3.7/site-packages/superset/connectors/base/views.py", line 24, in <module>
from superset.views.base import SupersetModelView
File "/home/madao/anaconda3/envs/py37/lib/python3.7/site-packages/superset/views/__init__.py", line 17, in <module>
from . import (
File "/home/madao/anaconda3/envs/py37/lib/python3.7/site-packages/superset/views/alerts.py", line 113, in <module>
class AlertModelView(SupersetModelView): # pylint: disable=too-many-ancestors
File "/home/madao/anaconda3/envs/py37/lib/python3.7/site-packages/superset/views/alerts.py", line 175, in AlertModelView
True,
File "/home/madao/anaconda3/envs/py37/lib/python3.7/site-packages/superset/utils/core.py", line 671, in markdown
"markdown.extensions.codehilite",
File "/home/madao/anaconda3/envs/py37/lib/python3.7/site-packages/markdown/core.py", line 376, in markdown
md = Markdown(**kwargs)
File "/home/madao/anaconda3/envs/py37/lib/python3.7/site-packages/markdown/core.py", line 87, in __init__
configs=kwargs.get('extension_configs', {}))
File "/home/madao/anaconda3/envs/py37/lib/python3.7/site-packages/markdown/core.py", line 113, in registerExtensions
ext = self.build_extension(ext, configs.get(ext, {}))
File "/home/madao/anaconda3/envs/py37/lib/python3.7/site-packages/markdown/core.py", line 143, in build_extension
entry_points = [ep for ep in util.get_installed_extensions() if ep.name == ext_name]
File "/home/madao/anaconda3/envs/py37/lib/python3.7/site-packages/markdown/util.py", line 88, in get_installed_extensions
return metadata.entry_points(group='markdown.extensions')
TypeError: entry_points() got an unexpected keyword argument 'group'
pip install Markdown==3.3.3
完整的包列表如下:
Package Version
---------------------- -----------
aiohttp 3.8.6
aiosignal 1.3.1
alembic 1.9.4
amqp 2.6.1
apache-superset 1.2.0
apispec 3.3.2
async-timeout 4.0.3
asynctest 0.13.0
attrs 23.2.0
Babel 2.14.0
backoff 2.2.1
billiard 3.6.4.0
bleach 3.3.1
Brotli 1.1.0
cachelib 0.1.1
celery 4.4.7
certifi 2024.2.2
cffi 1.15.1
charset-normalizer 3.3.2
click 7.1.2
colorama 0.4.6
contextlib2 21.6.0
convertdate 2.4.0
cron-descriptor 1.4.3
croniter 2.0.5
cryptography 3.2.1
decorator 5.1.1
defusedxml 0.7.1
dnspython 2.3.0
email-validator 1.3.1
exceptiongroup 1.2.1
Flask 1.1.4
Flask-AppBuilder 3.4.5
Flask-Babel 2.0.0
Flask-Caching 1.11.1
Flask-Compress 1.15
Flask-JWT-Extended 3.25.1
Flask-Login 0.4.1
Flask-Migrate 4.0.7
Flask-OpenID 1.3.0
Flask-SQLAlchemy 2.5.1
flask-talisman 1.1.0
Flask-WTF 0.14.3
frozenlist 1.3.3
geographiclib 2.0
geopy 2.4.1
graphlib_backport 1.1.0
gunicorn 20.0.4
h11 0.14.0
holidays 0.10.3
humanize 4.6.0
idna 3.7
importlib-metadata 2.1.1
importlib-resources 5.12.0
isodate 0.6.1
itsdangerous 1.1.0
Jinja2 2.11.3
jsonschema 4.17.3
kombu 4.6.11
korean-lunar-calendar 0.3.1
Mako 1.2.4
Markdown 3.3.3
MarkupSafe 2.0.1
marshmallow 3.19.0
marshmallow-enum 1.5.1
marshmallow-sqlalchemy 0.26.1
msgpack 1.0.5
multidict 6.0.5
numpy 1.21.6
outcome 1.3.0.post0
packaging 24.0
pandas 1.2.5
parsedatetime 2.6
pathlib2 2.3.7.post1
pgsanity 0.2.9
pip 24.0
pkgutil_resolve_name 1.3.10
polyline 2.0.2
prison 0.2.1
py 1.11.0
pyarrow 3.0.0
pycparser 2.21
PyJWT 1.7.1
PyMeeus 0.5.12
pyparsing 2.4.7
pyrsistent 0.19.3
PySocks 1.7.1
python-dateutil 2.9.0.post0
python-dotenv 0.21.1
python-geohash 0.8.5
python3-openid 3.2.0
pytz 2024.1
PyYAML 6.0.1
redis 5.0.4
retry 0.9.2
selenium 4.11.2
setuptools 69.0.3
simplejson 3.19.2
six 1.16.0
slackclient 2.5.0
sniffio 1.3.1
sortedcontainers 2.4.0
SQLAlchemy 1.3.20
SQLAlchemy-Utils 0.36.8
sqlparse 0.3.0
trio 0.22.2
trio-websocket 0.11.1
typing-extensions 3.10.0.2
urllib3 2.0.7
vine 1.3.0
webencodings 0.5.1
Werkzeug 1.0.1
wheel 0.42.0
wsproto 1.2.0
WTForms 2.3.3
WTForms-JSON 0.3.5
yarl 1.9.4
zipp 3.15.0
zstandard 0.21.0
4.初始化
初始化superset数据库: superset db upgrade
生成 ~/.superset/superset.db 文件, superset默认使用Sqlite数据库
创建管理员用户:
export FLASK_APP=superset
flask fab create-admin
Superset 初始化: superset init
5.启动
5.1 直接启动
使用superset命令直接启动,一般用来测试,生产环境不适用
superset run -h 0.0.0.0 -p 8787 --with-threads --reload --debugger
5.1 使用gunicon
gunicorn是一款服务器应用,能够兼容多种Web框架,Superset基于Flask构建,能够使用gunicorn启动
安装gunicorn:
pip install gunicorn -i https://pypi.tuna.tsinghua.edu.cn/simple
启动命令: /usr/local/python3/bin/gunicorn --worker-class=gevent -D --workers 5 --timeout 1200 --bind 0.0.0.0:8787 --access-logfile=/home/superset/logs/success.log --log-level debug --error-logfile=/home/superset/logs/error.log "superset.app:create_app()" --capture-output
参数说明:
--workers:指定进程个数
--worker-class: 工作模式
--timeout:worker 进程超时时间,超时会自动重启
--bind:绑定本机地址,即为 Superset 访问地址
--daemon/-D:后台运行
--access-logfile: 指定日志文件
--log-level:日志级别
--error-logfile:错误日志文件
停止应用: kill -9 $( ps -ef | grep superset | grep -v grep |awk '{print $2}')
访问页面: http://localhost:8787/login/, 用户名密码即为初始化时设置的值
至此, 安装配置完成
6.docker方式安装
使用docker可以直接拉取Superset镜像,并运行容器,免去了手动安装部署以及包冲突的解决
docker安装可以参考 菜鸟教程安装docker
1.拉取镜像: docker pull apache/superset:1.2.0
2.运行容器: docker run --name superset -d -p 8787:8787 apache/superset:1.2.0
其它的操作有:
查看运行的容器: docker ps
查看所有容器: docker ps -a
启动容器: docker start CONTAINER ID
停止容器: docker stop CONTAINER ID