一.前言
記錄最新穩定版superset的安裝過程。第一種是pip 安裝,方便快捷。第二種是github上源碼安裝,優點是可以進行二次開發。我是用anaconda創建虛擬環境,之後在虛擬環境中安裝的superset。
#創建虛擬環境
conda create -n superset python=3.6
#激活環境
soure activate superset
二.版本
- python 3.6
- superset 0.36.0
三.pip安裝superset
1.步驟:
# 1.安裝 superset
pip install apache-superset
# 2.初始化數據庫
superset db upgrade
# 3.創建用戶並按提示設置密碼
superset fab create-admin
# 4.加載官方例子
superset load_examples
# 5.初始化角色和權限
superset init
# 6.在本機8088端口運行superset
superset run -p 8088
遠端運行superset時,要寫上主機host的iP地址。第6步改成
superset run -h host -p 8088
之後打開 host:8088 就可以進入superset了。
2.問題
ERROR:load_examples時報403 ERROR.
原因:examples數據在github上,內網連不上github。
解決:
-
1.先從github下載examples-data-master.zip。
-
2.將examples-data-master.zip解壓到/home/ubuntu/anaconda3/envs/superset3/lib/python3.6/site-packages/superset/examples-data-master文件夾下
-
3.修改/home/ubuntu/anaconda3/envs/superset3/lib/python3.6/site-packages/superset/examples/helpers.py配置文件。將原來的BASE_URL註釋掉,新增自己下載的文件路徑。
#BASE_URL = "https://github.com/apache-superset/examples-data/blob/master/"
BASE_URL = "/home/ubuntu/anaconda3/envs/superset3/lib/python3.6/site-packages/superset/examples-data-master/"
- 4.重新運行 superset load_examples
四.源碼安裝superset.
之前的superset是0.28.1,網上有很多教程,但這次是對新版superset0.36.0的進行二次開發,源碼安裝時遇到很多坑,還是記錄下安裝過程吧。先創建並激活虛擬環境supesetgit
conda create -n supersetgit python=3.6
soure activate supersetgit
步驟:
一. 從git下載superset0.36.0的壓縮包incubator-superset-0.36.0.zip
下載後解壓到/home/ubuntu/anaconda3/envs/superset036/lib/python3.6/site-packages/incubator-superset-0.36.0
二. 安裝擴展依賴,及開發依賴(這裏指定豆瓣源)
#進入到目錄
cd /home/ubuntu/anaconda3/envs/superset036/lib/python3.6/site-packages/incubator-superset-0.36.0
#安裝依賴
pip install -r requirements.txt -i https://pypi.douban.com/simple/
#安裝開發依賴
pip install -r requirements-dev.txt -i https://pypi.douban.com/simple/
三. 安裝superset
pip install -e .
四.初始化
#修改config.py,將數據庫改成superset036.db
SQLALCHEMY_DATABASE_URI = "sqlite:///" + os.path.join(DATA_DIR, "superset036.db")
#初始化數據庫
superset db upgrade
#創建管理員權限和密碼
superset fab create-admin
#初始化角色和權限
superset init
#加載示例數據(內網下載不下來,方法同上章)
superset load_examples
五.安裝編譯前端文件,並進入前端開發者模式
編譯前端文件,並進入前端開發者模式
cd /home/ubuntu/anaconda3/envs/supersetgit/lib/python3.6/site-packages/incubator-superset-0.36.0/superset-frontend
npm run build
npm run dev
這裏遇到很多問題。
error1: 經覈實發現部分文件要求的node版本要高於現有版本。下載新node
error2: 部分文件不支持linux(強制安裝即可)
npm install --no-optional --no-shrinkwrap --no-package-lock
error3: @babel/plugin-proposal-private-methods和@babel/plugin-proposal-class-properties的loose值不一致。
修改.../incubator-superset-0.36.0/superset-frontend/babel.config.js,添加兩行,將loose都設置爲true.
plugins: [
'lodash',
'@babel/plugin-syntax-dynamic-import',
//'@babel/plugin-proposal-class-properties', //這行需註釋掉。
'@babel/plugin-proposal-optional-chaining',
['@babel/plugin-transform-runtime', { corejs: 3 }],
'react-hot-loader/babel',
['@babel/plugin-proposal-private-methods', { 'loose': true }],//新增的,將loose設爲true
['@babel/plugin-proposal-class-properties', { 'loose': true }],//新增的,將loose設爲true
],
error4: TS2339: Property 'hidden' does not exist on type 'ColumnInstance<{}>'.
ERROR in /home/ubuntu/anaconda3/envs/supersetgit/lib/python3.6/site-packages/incubator-superset-0.36.0/superset-frontend/src/components/ListView/TableCollection.tsx(45,22):
TS2339: Property 'hidden' does not exist on type 'ColumnInstance<{}>'.
解決方法:修改TableCollection.tsx文件。
#修改44行,修改前
{headerGroup.headers.map(column =>
#修改後
{headerGroup.headers.map((column:any) =>
#修改82行,修改前
{row.cells.map(cell:any => {
#修改後
{row.cells.map((cell:any) => {
類似bug及解決方案:
- https://stackoverflow.com/questions/61162942/why-does-typescript-throw-the-error-ts2339-property-error-does-not-exist-on
- https://stackoverflow.com/questions/60882681/property-store-does-not-exist-on-type-readonlyappinitialprops
error5:Nodemon Error: System limit for number of file watchers reached
解決方法:擴大系統監視文件的最大數量
echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf && sudo sysctl -p
具體步驟:
1.安裝nodejs,查看版本發現已安裝。
node --version
v8.10.0
2.查看版本發現已安裝。
npm --version
3.5.2
3.安裝node管理工具n,安裝新node,更新對應的npm。
#安裝node管理工具n
npm install -g n
#安裝穩定版node
n stable
#查看已安裝node
n
#全局安裝npm
npm -g install [email protected]
#創建軟連接,需先刪除原來的/usr/bin/npm鏈接
ln -s /usr/local/n/versions/node/12.17.0/bin/npm /usr/bin/npm
4.修改babel.config.js,添加下面兩行將loose設置爲true.
['@babel/plugin-proposal-private-methods', { 'loose': true }],
['@babel/plugin-proposal-class-properties', { 'loose': true }],
5.#npm永久設置成淘寶源
npm config set registry https://registry.npm.taobao.org
6.npm install -d
7.npm run build
8.npm run dev
六.運行superset.
superset run -h 0.0.0.0 -p 8087
七.參考文章
- https://blog.eric7.site/2020/02/23/superset/ #superset源碼安裝
- https://www.jianshu.com/p/c641dcc47b48 #node管理工具n
- https://babeljs.io/docs/en/babel-plugin-proposal-private-methods #error3解決方案