window11 搭建superset1.3.1开发环境

1、superset版本:1.3.1
2、window版本:11
3、python 版本:3.8(3.7以上的应该都可以)
4、Node.js 版本:12.14.1;npm 版本:7.5.4
补充:Node和npm的版本是superset要求的版本,我实测了更低的node版本,刚开始superset前端可以正常启动,只是控制台会出各种警告而已,过了一天前端就启动不了了(没动过前端代码),对于前端不熟的我完全找不到问题,说多了都是泪啊,前端环境还是按着提示安装吧)

一、superset下载

下面是下载地址,我下载的是1.3.1版本,下载zip压缩包,解压
Tags · apache/superset · GitHub

二、搭建superset后端

1、创建虚拟环境(python3.7或3.8都可以),之后激活虚拟环境,进入项目根目录superset-1.3.1,后续命令需要在虚拟环境下运行。

2、安装后端项目依赖包

2.1、离线安装部分包

有部分包(如geohash)无法通过pip在线安装,需要自行去三方平台下载离线包
这里提供个网站供大家参考,请根据自己python版本下载对应的离线包
Python Extension Packages for Windows - Christoph Gohlke (uci.edu)

我的python版本是3.8,window,amd64 ,所以下载的包就是
python_geohash-0.8.5-cp38-cp38-win_amd64.whl
下载之后在虚拟环境下直接安装该包即可,命令如下:

pip install python_geohash-0.8.5-cp38-cp38-win_amd64.whl
2.2、在线安装部分其他依赖包

虚拟环境路径记得切换回项目根目录superset-1.3.1,即setup.py文件的同级目录
执行命令:

pip install -e .
pip install pillow

补充:pillow也需要额外安装,否则启动服务时会警告No PIL installation found(不安装不影响使用,但控制台的警告日志看着不舒服)

3、修改数据源为mysql

superset后端是基于Flask AppBuilder框架,所以修改配置的方式和F·A·B框架一样,都是改配置文件superset-1.3.1\superset\config.py。其他配置可以参考官方文档,本文仅介绍如何修改数据源。
Base Configuration — Flask AppBuilder

3.1、安装支持mysql的模块

由于前面superset默认没有安装支持MySQL的包,所以这里需要额外安装包来支持MySQL。

pip install mysqlclient

如果没安装该模块,当修改数据源配置为mysql时,启动服务会报错
ModuleNotFoundError: No module named 'MySQLdb'
因为MySQLdb模块不支持python3,所以这里改安装mysqlclient包。(这里有另外一种解决方案,就是去修改代码,但这里不推荐)。

3.2、修改配置文件superset-1.3.1\superset\config.py

将默认的sqlite改为mysql

# SQLALCHEMY_DATABASE_URI = "sqlite:///" + os.path.join(DATA_DIR, "superset.db")
SQLALCHEMY_DATABASE_URI = 'mysql://root:root@localhost:3307/superset1?charset=utf8'

mysql8默认不开启远程登录,如果发现登录不上,则需要到MySQL里面进行配置, MYSQL8无法远程登录

4、修改缓存配置(此步骤可省略)

依旧是在config.py文件内修改,修改下面两个变量

# Default cache for Superset objects
# CACHE_CONFIG: CacheConfig = {"CACHE_TYPE": "null"}
CACHE_CONFIG: CacheConfig = {"CACHE_TYPE": "simple"}

# Cache for datasource metadata and query results
# DATA_CACHE_CONFIG: CacheConfig = {"CACHE_TYPE": "null"}
DATA_CACHE_CONFIG: CacheConfig = {"CACHE_TYPE": "simple"}

不修改不会影响后端服务启动,但是每次启动都会出现日志警告,如下

 Flask-Caching: CACHE_TYPE is set to null, caching is effectively disabled.

5、初始化用户和权限的相关表

执行下面命令,启动superset命令,superset第一次启动后,会在自动检查数据库,并自动创建用户和权限的相关表(这是基于Flask AppBuilder框架完成的,有兴趣可以看一下Flask AppBuilder)

superset run  -p 8088 --with-threads --reload --debugger

启动完成后,按Ctrl+C关闭superset服务(命令窗口要用来执行其他命令)。

6、创建管理员账号(基于Flask AppBuilder)

superset fab create-admin

按提示创建管理员账号即可

7、更新superset的相关数据模型(即在数据库生成superset的数据表)

superset db upgrade

8、导入superset的案例(要梯子的,可以忽略此步骤)

superset load_examples

9、初始化superset(视图权限,即各个角色的访问权限)

superset init

到这里,后端就搭建完成了

10、启动后端服务

superset run -p 8088 --with-threads --reload --debugger

搭建完成,控制台提示可访问:
http://127.0.0.1:8088/
如果能正常打开登录页面,且用户名密码登录后没提示密码错误,那后端就是搭建成功了。(登录进去后页面空白,这个问题我还没解决,暂时不影响superset的搭建)

11、补充

11.1、superset的8088端口登录成功后一片空白(看的怀疑人生)。因为superset的后端是基于Flask AppBuilder框架,8088端口登录的实际上是Flask AppBuilder的后台管理。而superset只是使用Flask AppBuilder框架的后端,不是后台页面,所以暂时可以这里可以忽略过。
11.2、后端服务启动成功后,窗口就不要关闭后,重新开个窗口运行前端的服务。

三、搭建superset前端

新开一个命令行窗口,进入到目录superset-1.3.1\superset-frontend(package.json文件同级目录)。

1、编译项目

执行命令npm install

编译完成后,我这边提示内容如下

npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@2.2.1 (node_modules\fsevents):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@2.2.1: wanted {"os":"darwin","arch":"any"} (current: {"os":"win32","arch":"x64"})

added 4565 packages from 2257 contributors in 158.861s

233 packages are looking for funding
  run `npm fund` for details

注意,如果当前npm版本不符合superset的要求,控制台日志会做出相应提醒,如下

npm WARN old lockfile
npm WARN old lockfile The package-lock.json file was created with an old version of npm,
npm WARN old lockfile so supplemental metadata must be fetched from the registry.
npm WARN old lockfile
npm WARN old lockfile This is a one-time fix-up, please be patient...
npm WARN old lockfile
npm WARN EBADENGINE Unsupported engine {
npm WARN EBADENGINE   package: 'superset@1.3.1',
npm WARN EBADENGINE   required: { node: '^14.15.5', npm: '^7.5.4' },
npm WARN EBADENGINE   current: { node: 'v12.14.1', npm: '8.0.0' }
npm WARN EBADENGINE }

如果npm版本不对,使用下面命令安装指定提示版本即可

npm install npm@7.5.4 -g

2、修改superset-1.3.1\superset-frontend\webpack.config.js文件

找到下面代码的位置

{
    test: /\.jsx?$/,
    // include source code for plugins, but exclude node_modules and test files within them
    exclude: [/superset-ui.*\/node_modules\//, /\.test.jsx?$/],
    include: [
        new RegExp(`${APP_DIR}/src`),
        /superset-ui.*\/src/,
        new RegExp(`${APP_DIR}/.storybook`),
        /@encodable/,
    ],
    use: [babelLoader],
},

加上一行代码path.resolve(__dirname, './src'),,如下(加完记得保存)

{
    test: /\.jsx?$/,
    // include source code for plugins, but exclude node_modules and test files within them
    exclude: [/superset-ui.*\/node_modules\//, /\.test.jsx?$/],
    include: [
        new RegExp(`${APP_DIR}/src`),
        /superset-ui.*\/src/,
        new RegExp(`${APP_DIR}/.storybook`),
        /@encodable/,
        path.resolve(__dirname, './src'),
    ],
    use: [babelLoader],
},

3、运行前端服务npm run dev-server

运行成功后提示如下:

98% after emitting SizeLimitsPluginNo type errors found
Version: typescript 4.3.5
Time: 78223ms
‼ 「wdm」:    12129 modules

4、访问superset页面

http://localhost:9000/
superset正常打开,superset搭建结束

5、补充

5.1、没修改webpack.config.js直接启动前端服务将会报错Failed to compile.
5.2、npm run dev-server无法直接运行, 查看package.json,发现该快捷命令如下
"dev-server": "cross-env NODE_ENV=development BABEL_ENV=development node --max_old_space_size=4096 ./node_modules/webpack-dev-server/bin/webpack-dev-server.js --mode=development",

在老版本的superset里面,"dev-server"命令里面是没有包含cross-env关键字的,因此无法直接运行"dev-server",需要将该命令拆分为下面三个命令执行。

set NODE_ENV=development
set BABEL_ENV=development
node --max_old_space_size=4096 ./node_modules/webpack-dev-server/bin/webpack-dev-server.js --mode=development

或者手动在该命令里面加上cross-env关键字,如上。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 220,492评论 6 513
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 94,048评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 166,927评论 0 358
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,293评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,309评论 6 397
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 52,024评论 1 308
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,638评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,546评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 46,073评论 1 319
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,188评论 3 340
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,321评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,998评论 5 347
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,678评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,186评论 0 23
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,303评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,663评论 3 375
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,330评论 2 358

推荐阅读更多精彩内容