• mac安装运行superset及踩坑解决过程


    介绍

    Apache Superset 是一个现代的企业级商业智能 Web 应用程序。它快速、轻量、直观,并加载了各种选项,使所有技能的用户都可以轻松探索和可视化他们的数据,从简单的饼图到高度详细的 Deck.gl 地理空间图表。

    安装

    • 首先安装自制homebrew安装 管理器,然后运行以下命令:
    brew install readline pkg-config libffi openssl mysql postgresql@14
    
    • 1
    • 配置环境变量
      需要设置 LDFLAGS 和 CFLAGS 才能正确构建某些 Python 包。您可以使用以下命令导出这些变量
    export LDFLAGS="-L$(brew --prefix openssl)/lib"
    export CFLAGS="-I$(brew --prefix openssl)/include"
    
    • 1
    • 2
    • 克隆代码到本地
    git clone https://github.com/apache/superset.git
    cd superset
    
    • 1
    • 2
    • 安装
     # Create a virtual environment and activate it (recommended)
    python3 -m venv venv # setup a python3 virtualenv
    source venv/bin/activate
    
    # Install external dependencies
    pip install -r requirements/testing.txt
    
    # Install Superset in editable (development) mode
    pip install -e .
    
    # Initialize the database
    superset db upgrade
    
    # Create an admin user in your metadata database (use `admin` as username to be able to load the examples)
    superset fab create-admin
    
    # Create default roles and permissions
    superset init
    
    # Load some data to play with.
    # Note: you MUST have previously created an admin user with the username `admin` for this command to work.
    superset load-examples    #optional
    
    #Before running back-end services, front-end dependencies need to be downloaded and packaged, and js will be automatically loaded when running the back-end service
    
    #install node
    brew install node
    
    #Install the domestic image source
    npm install -g cnpm --registry=https://registry.npm.taobao.org
    
    #install client dependencies
    cd superset-frontend
    cnpm i
    
    # Start the Flask dev web server from inside your virtualenv.
    # Note that your page may not have CSS at this point.
    # See instructions below how to build the front-end assets.
    superset run -p 8088 --reload --debugger --debug
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39

    安装运行遇到的问题

    1. 执行superset load-examples报错需要证书才能拉下来

    解决方案:
    (1)报错ssl证书拉取不了, 将需要用到展示示例源码下载放到自己的本地,然后不通过远程拉取,自行修改该路径文件:superset/examples/helpers.py
    (2)或者通过将该代码的根证书导入到本地根,liunx配置证书

    2. 执行superset安装时需要配置SUPERSET_SECRET_KEY环境变量,不然拒绝加载服务
    更多详情参考官方超级配置集

     # Flask App Builder configuration
    # Your App secret key will be used for securely signing the session cookie
    # and encrypting sensitive information on the database
    # Make sure you are changing this key for your deployment with a strong key.
    # Alternatively you can set it with `SUPERSET_SECRET_KEY` environment variable.
    # You MUST set this for production environments or the server will not refuse
    # to start and you will see an error in the logs accordingly.
    SECRET_KEY = 'YOUR_OWN_RANDOM_GENERATED_SECRET_KEY'
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    解决方式1:

    #生成加密密钥
    openssl rand -base64 42
    
    #使用openssl生成的密钥,临时加载环境变量
    export SUPERSET_SECRET_KEY='xxxxxxxxx'
    
    • 1
    • 2
    • 3
    • 4
    • 5

    解决方式2:
    自行在 superset/config.py配置SUPERSET_SECRET_KEY
    在这里插入图片描述

    替换本地mysql

    #安装pymysql依赖
    pip install pymysql
    
    • 1
    • 2

    修改 superset/config.py的mysql连接
    ![在这里插入图片描述](https://img-blog.csdnimg.cn/511c3bd1a3d5499da5e00d65afa9a062.png
    在这里插入图片描述
    注意事项:连接mysql 8.0以上报错

    pymysql.err.OperationalError: (2003, "Can't connect to MySQL server on 'localhost' ([Errno 61] Connection refused)")
    
    • 1

    原因分析:

    MySQL支持socket和TCP/IP连接。而mysql.sock文件的作用是连接localhost,叫做Unix域套接字文件。套接字文件被删除后,本地客户就不能连接。/tmp文件夹属于临时文件,随时可能被删除。

    那么my.cnf配置文件中设置了[mysqld]的参数socket,但是没有设置[client]的参数socket就会出现这样的报错ERROR
    2002 (HY000): Can’t connect to local MySQL server through socket
    ‘/tmp/mysql.sock’ (2)

    还有一点,当mysql.sock被设置在/tmp目录下,而client段被误删除并不会影响到数据库的登录问题(包括重启数据库),但是服务器重启后因为tmp为临时目录,mysql.sock文件被删除,就会影响登录。

    方式一:
    修改vim /etc/my.cnf
    在这里插入图片描述

    重启mysql

    brew services restart mysql
    
    • 1

    方式二:
    在pymysql连接时加上unix_socket=/tmp/mysql.sock,如上图
    在这里插入图片描述

    最后,此文章经过笔者不少踩坑才完成,来之不易,喜欢请三联下,谢谢!!

  • 相关阅读:
    转换年金是什么意思呢?
    Unity2D-怪物AI启发式寻路算法(多目标,任意怪物大小,攻击范围)
    在docker中创建EMQX 加数据卷
    快速全面掌握数据库系统核心知识点
    码云gitee+宝塔webhook实现同步代码
    19. 内置 Tomcat 配置和切换
    HALCON-从入门到入门-阈值分割定位算子综合运用
    PEG功能化/修饰/偶联中空二氧化硅纳米球 PEG-Hollow SiO2 nanosphere
    MybatisPlus生成主键策略方法
    Vue 中的 computed 和 watch 的区别
  • 原文地址:https://blog.csdn.net/weixin_49319422/article/details/133169797