部署Superset BI(三)连接HANA数据库
metabase和redash都不支持HANA数据库,选择superset就是看重这一点,开始尝试连接HANA数据库。
按Superset的技术文档:pip install hdbcli sqlalchemy-hana or pip install apache-superset[hana]
--进入容器
root@Nocobase:/usr/superset/superset# docker exec -it superset_app bash
--安装驱动
root@00aa0c6b0a25:/app# pip install hdbcli sqlalchemy-hana
Collecting hdbcli
Downloading hdbcli-2.22.32-cp34-abi3-manylinux1_x86_64.whl.metadata (6.0 kB)
Collecting sqlalchemy-hana
Downloading sqlalchemy_hana-3.0.0-py3-none-any.whl.metadata (19 kB)
Requirement already satisfied: sqlalchemy<3,>=1.4.0 in /usr/local/lib/python3.10/site-packages (from sqlalchemy-hana) (1.4.52)
Requirement already satisfied: greenlet!=0.4.17 in /usr/local/lib/python3.10/site-packages (from sqlalchemy<3,>=1.4.0->sqlalchemy-hana) (3.0.3)
Downloading hdbcli-2.22.32-cp34-abi3-manylinux1_x86_64.whl (11.3 MB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 11.3/11.3 MB 10.0 MB/s eta 0:00:00
Downloading sqlalchemy_hana-3.0.0-py3-none-any.whl (28 kB)
Installing collected packages: hdbcli, sqlalchemy-hana
Successfully installed hdbcli-2.22.32 sqlalchemy-hana-3.0.0
WARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager, possibly rendering your system unusable.It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv. Use the --root-user-action option if you know what you are doing and want to suppress this warning.
但新建数据连接的地方,没有显示SAP HANA的选项。
--创建配置文件
root@Nocobase:/usr/superset/superset/docker#touch requirements-local.txt
root@Nocobase:/usr/superset/superset/docker# echo "hdbcli">> requirements-local.txt
root@Nocobase:/usr/superset/superset/docker# echo "sqlalchemy-hana">> requirements-local.txt
--重启
root@Nocobase:/usr/superset/superset/docker#docker compose down
重启后,可以看到启动初始化已经加载SAP HANA的驱动。
superset_init | Installed 1 package in 10ms
superset_init | ~ apache-superset==0.0.0.dev0 (from file:///app)
superset_init | Installing local overrides at /app/docker/requirements-local.txt
superset_init | Resolved 4 packages in 1.25s
superset_init | Downloading hdbcli (10.8MiB)
superset_init | Downloaded hdbcli
superset_init | Prepared 2 packages in 1.04s
superset_init | Installed 2 packages in 25ms
superset_init | + hdbcli==2.24.21
superset_init | + sqlalchemy-hana==3.0.1
--配置HANA数据库连接
遇连接字符串 haha://username:password@ip:30015
遇到错误,是防火墙问题,配置hana端的防火墙策略,ok.
An error occurred while creating databases: (builtins.NoneType) None
[SQL: (hdbcli.dbapi.Error) (-10709, 'Connection failed (RTE:[89009] Socket connect timeout (59999 ms) (172.168.0.209:30015))')
(Background on this error at: https://sqlalche.me/e/14/dbapi)]
(Background on this error at: https://sqlalche.me/e/14/dbapi)