我正在尝试自定义我的 Apache Superset。我对终端不太熟悉。
在文档上写道: “要配置您的应用程序,您需要创建一个文件(模块)superset_config.py并确保它位于您的 PYTHONPATH 中。以下是您可以在该配置模块中复制/粘贴的一些参数:”。
假设我想将 ROW_LIMIT 减少到 5000,并且我的 Superset 安装在名为“ExperimentSuperset”的 Anaconda 环境上。
有人可以向我解释一下我必须做什么才能达到这个结果吗?
pythonpath主要定义为:
(也可以使用 sys.path 和 pth 文件进行增强 - 它定义目录并且其本身需要位于 python 中)。
根据我的经验,pythonpath 变量由大多数超集应用程序设置,并且可以通过在控制台中调用
set
或 echo $pythonpath
来评估最简单的方法。您还可以使用 python 从终端打印出 pythonpath:python -c "import sys; print('\n'.join(sys.path))"
。
Superset 在路径中查找名为
superset_config.py
的文件。设置环境变量时即使不在路径中也可以直接指向该文件SUPERSET_CONFIG_PATH=/your/path/to/superset_config.py
。
在源代码中有一个名为
config.py
的文件,其中包含所有设置。所有设置都将被从 superset_config.py
加载的设置覆盖。因此,您只需要定义超集应用程序的细节即可。
所以你的具体步骤是:
superset_config.py
ROW_LIMIT = 5000
添加到文件SUPERSET_CONFIG_PATH
Superset 然后将使用配置文件并读取您的设置。注意,配置是一个功能齐全的 python 文件,因此您可以添加方法等。在超集示例中,有一个有用的方法从环境变量中提取参数。这在使用例如码头工人。
在
config.py
结束时,您会看到它尝试从 superset_config.py
环境变量加载 SUPERSET_CONFIG_PATH
,因此您需要做的就是:
export SUPERSET_CONFIG_PATH=/path/to/your/superset_config.py
来源:https://github.com/apache/superset/issues/2117#issuecomment-277666183
配置您的 superset_config.py 以覆盖在 config.py 文件中声明的 superset 的默认参数 -
superset_config.py:
ROW_LIMIT=5000
如果您使用 docker run 命令运行 docker 镜像,那么它可能无法工作。因为 superset_config.py 仅当 os.environ 中有 SUPERSET_CONFIG_PATH 时才执行。您需要在 Dockerfile 中添加 SUPERSET_CONFIG_PATH,以便从 os.environ 中获取它。
要实现此目的,您需要像这样配置 Dockerfile,添加 SUPERSET_CONFIG_PATH 和 ENV:
Dockerfile:
ENV LANG=C.UTF-8 \
LC_ALL=C.UTF-8 \
FLASK_ENV=production \
SUPERSET_ENV=production \
SUPERSET_LOAD_EXAMPLES=yes \
CYPRESS_CONFIG=false \
MAPBOX_API_KEY='XXXXXX' \
FLASK_APP="superset.app:create_app()" \
PYTHONPATH="/app/pythonpath:/app/docker/pythonpath_prod" \
SUPERSET_HOME="/app/superset_home" \
SUPERSET_CONFIG_PATH="/path/to/your/superset_config.py" \
SUPERSET_PORT=8088
例如,我的文件位于 /app/docker/superset_config.py 那么这将是我的 SUPERSET_CONFIG_PATH。
现在使用 Dockerfile 构建新映像。
您可以通过此命令检查您的图像Env配置。
docker inspect <image-name:tag>
如有任何疑问请评论。谢谢。
一个简单的方法是:
当前目录下有自定义的
superset_config.py
文件。
示例
superset_config.py
ROW_LIMIT = 5000
SUPERSET_WEBSERVER_PORT = 9777
SQLALCHEMY_DATABASE_URI = 'sqlite:///superset.sqlite3'
我们不需要导出环境变量
SUPERSET_CONFIG_PATH
。相反,我们可以使用修改后的 PYTHONPATH
来调用我们的预期操作
例如:
PYTHONPATH=.:$PYTHONPATH superset db upgrade
# or
PYTHONPATH=.:$PYTHONPATH python main.py
这个问题是前一段时间提出的,但我最近发现自己也遇到了同样的情况,如果可以帮助别人,我想提供我的意见。截至当前日期,为了能够编辑配置,您必须创建一个名为“superset_config.py”的文件并将其放置在 pythonpath 中。 apache/superset 的默认 python 路径之一是“/app/pythonpath”。
在 docker run 命令中,使用 -v 选项指定本地主机上链接到容器的卷,例如
docker run --network <your_network_name> --detach --name <name_of_your_container> -v /<path_to_local_volume>:/app/pythonpath/ -e "SUPERSET_SECRET_KEY=<YOUR_SECRET_KEY> --restart=unless-stopped -p 8088:8088 apache/superset:<version_tag>
。运行中声明的其他选项不是强制性的,仅取决于您是否要声明这些值。附言。您可以通过设置环境变量选项 -e -e PYTHONPATH=</path/to/your/python/modules>
来指定其他 PYTHONPATH。
如果按照“从头开始安装”中的说明完成安装,则
config.py
将位于类似于以下内容的位置:
/root/venv/lib/python3.6/site-packages/superset/config.py