部署superset_ubuntu16下部署apache superset趟坑指南(内有福利)
Apache superset是一個輕量級的BI,為了驗證下kylin搭配superset的效果,在ubuntu16.04.6下安裝了superset,superset安裝部署的主要問題在于其對python環境及相關組件的版本要求較高,版本對不上就會導致出現種種問題,所以安裝的時候采用了在python虛擬環境下進行安裝,先后測試了python-3.9.0a3和python-3.5.2兩個虛擬環境,安裝都遇到了問題,最后采用python-3.7.6版本的虛擬環境安裝成功,具體步驟如下:
一、提前準備
1、系統上需要安裝的組件
(1)libffi-dev
執行apt install libffi-dev 命令,如果缺少該庫安裝superset的過程會報"No module named '_ctypes'"的錯誤。
(2)openssl
未安裝openssl會報“找不到_ssl模塊的錯誤 Was unable to import superset Error: No module named '_ssl'”。先下載openssl:
wget https://www.openssl.org/source/openssl-1.1.1d.tar.gz
然后解壓縮openssl
tar -zxvf openssl-1.1.1d.tar.gz
最后在openssl-1.1.1d的文件夾中執行如下命令:
./config --prefix=/usr/local/openssl shared zlib
執行后如下圖:
最后再執行:
make && make install,即可完成openssl的安裝。
(3)安裝python-dev libsasl2-dev gcc三個庫
執行apt-get install python-dev libsasl2-dev gcc,這里主要是sasl庫不安裝會有問題;
(4)安裝sqlite
不安裝sqlite會報“ModuleNotFoundError: No module named '_sqlite3"的異常,安裝sqlite執行命令如下:
apt-get install libsqlite3-dev
2、虛擬環境準備
下載python-3.7.6對應的安裝包,解壓縮,然后在解壓縮之后的目錄中執行:
./configure prefix=/usr/local/python3.7.6 --with-openssl=/usr/local/openssl --enable-loadable-sqlite-extensions
make && make install
最后進入根目錄,使用virtualenv執行:
virtualenv -p /usr/local/python3.7.6/bin/python3 python3.7.6
建立好python3.7.6版本的虛擬環境,執行:
source /python3.7.6/bin/activate 進入對應的環境,進行下面python下的組件安裝。
3、python下需要安裝的組件
(1)安裝requests包
先安裝requests,執行:
pip install requests -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com/
(2)安裝flask-appbuilder,執行命令:pip install flask-appbuilder -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com/
安裝完成之后就可以使用fabmanager命令了,如下圖:
(3)安裝wtforms_json、flask_compress、celery、flask_migrate、flask_talisman、flask_caching、sqlparse、bleach、markdown、numpy、pandas、parsedatetime、pathlib2、simplejson,humanize,geohash,polyline,geopy,cryptography,backoff,msgpack,pyarrow,contextlib2,croniter,retry,selenium,isodate
這些組件本著缺啥補啥的原則,一律執行pip install xxx即可,否則報如下異常:
Was unable to import superset Error: No module named 'wtforms_json'
Was unable to import superset Error: No module named 'flask_compress'
Was unable to import superset Error: No module named 'celery'
Was unable to import superset Error: No module named 'flask_migrate'
Was unable to import superset Error: No module named 'flask_talisman'
Was unable to import superset Error: No module named 'flask_caching'
Was unable to import superset Error: No module named 'sqlparse'
Was unable to import superset Error: No module named 'bleach'
Was unable to import superset Error: No module named 'markdown'
Was unable to import superset Error: No module named 'numpy'
Was unable to import superset Error: No module named 'pandas'
Was unable to import superset Error: No module named 'parsedatetime'
ModuleNotFoundError: No module named 'pathlib2'
ModuleNotFoundError: No module named 'simplejson'
ModuleNotFoundError: No module named 'humanize'
ModuleNotFoundError: No module named 'geohash'
ModuleNotFoundError: No module named 'polyline'
ModuleNotFoundError: No module named 'geopy'
sqlalchemy_utils.exceptions.ImproperlyConfigured: 'cryptography' is required to use EncryptedType
ModuleNotFoundError: No module named 'backoff'
ModuleNotFoundError: No module named 'msgpack'
ModuleNotFoundError: No module named 'pyarrow'
ModuleNotFoundError: No module named 'contextlib2'
ModuleNotFoundError: No module named 'croniter'
ModuleNotFoundError: No module named 'retry'
ModuleNotFoundError: No module named 'selenium'
ModuleNotFoundError: No module named 'isodate'
ImportError: cannot import name 'ImmutableDict' from 'werkzeug'
這里geohash這個要特別說一下,這個組件安裝之后再python的site-packages下其目錄是大寫的"Geohash",這導致geohash這個組件pip install之后,仍然報找不到,需要修改下其名字,如下:
再將geohash文件夾下_init_.py文件中得 from geohash修改成 from .geohash,如下圖:
(3)要特別注意版本號的組件
pip install --upgrade werkzeug==0.16.1
pip install flask-jwt-extended==3.18.1
pip install flask==0.12.5
pip install superset==0.28.1
pip install sqlalchemy==1.2.18
二、安裝superset的過程
最后安裝superset,注意superset的版本要選擇0.28.1,版本選擇不對會在后邊報:
auth_type.get(_appbuilder.sm.auth_type, "No Auth method")的異常;
superset安裝完成后如上圖所示。
讓我們來用fabmanager為superset創建用戶,執行命令:
fabmanager create-admin --app superset,這個過程會提示輸入用戶名,密碼等;
接著執行:
superset db upgrade,成功后如下圖:
superset init成功后如下圖:
superset runserver -p 5000 & (注意最新的superset-0.30.1版本沒有runserver這個命令)
這樣,superset就運行起來了,通過http://127.0.0.1:5000就可以訪問superset了,安裝好之后的界面如下:
三、其他異常
1、cannot import name 'Mapping' from 'collections'報這種錯誤基本就是python版本得問題,換版本吧;
四、所有組件的版本情況
1、
其他問題可以關注公號:【開心感恩】咨詢,如果有用記得點贊關注哦!
總結
以上是生活随笔為你收集整理的部署superset_ubuntu16下部署apache superset趟坑指南(内有福利)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 交强险赔付18000理赔详解 什么是交强
- 下一篇: 抄税怎么操作流程