使用 CLI 导出和导入仪表板的超级集(用于版本控制)

Ali*_*Mir 7 docker docker-compose devops apache-superset

目标:我的目标是从超集中导出所有仪表板,以便我可以将它们保存为备份,并确保我可以导入它们。

现有设置:我从 git 克隆超集并用于docker-compose -f docker-compose-non-dev.yml up 设置和运行超集(遵循本文档

问题:使用 superset CLI:我使用此文档 连接到正在运行 superset 的现有 docker 映像,然后运行它,superset export-dashboards但它会引发以下错误:


    Loaded your LOCAL configuration at [/app/docker/pythonpath_dev/superset_config.py]
logging was configured successfully
2021-10-20 06:54:49,727:INFO:superset.utils.logging_configurator:logging was configured successfully
2021-10-20 06:54:49,732:INFO:root:Configured event logger of type <class 'superset.utils.log.DBEventLogger'>
/usr/local/lib/python3.8/site-packages/flask_caching/__init__.py:201: UserWarning: Flask-Caching: CACHE_TYPE is set to null, caching is effectively disabled.
  warnings.warn(
Starting export
2021-10-20 06:54:50,962:INFO:superset.utils.dashboard_import_export:Starting export
Traceback (most recent call last):
  File "/usr/local/bin/superset", line 33, in <module>
    sys.exit(load_entry_point('apache-superset', 'console_scripts', 'superset')())
  File "/usr/local/lib/python3.8/site-packages/click/core.py", line 829, in __call__
    return self.main(*args, **kwargs)
  File "/usr/local/lib/python3.8/site-packages/flask/cli.py", line 586, in main
    return super(FlaskGroup, self).main(*args, **kwargs)
  File "/usr/local/lib/python3.8/site-packages/click/core.py", line 782, in main
    rv = self.invoke(ctx)
  File "/usr/local/lib/python3.8/site-packages/click/core.py", line 1259, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/usr/local/lib/python3.8/site-packages/click/core.py", line 1066, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/usr/local/lib/python3.8/site-packages/click/core.py", line 610, in invoke
    return callback(*args, **kwargs)
  File "/usr/local/lib/python3.8/site-packages/click/decorators.py", line 21, in new_func
    return f(get_current_context(), *args, **kwargs)
  File "/usr/local/lib/python3.8/site-packages/flask/cli.py", line 426, in decorator
    return __ctx.invoke(f, *args, **kwargs)
  File "/usr/local/lib/python3.8/site-packages/click/core.py", line 610, in invoke
    return callback(*args, **kwargs)
  File "/usr/local/lib/python3.8/site-packages/click/decorators.py", line 21, in new_func
    return f(get_current_context(), *args, **kwargs)
  File "/usr/local/lib/python3.8/site-packages/flask/cli.py", line 426, in decorator
    return __ctx.invoke(f, *args, **kwargs)
  File "/usr/local/lib/python3.8/site-packages/click/core.py", line 610, in invoke
    return callback(*args, **kwargs)
  File "/app/superset/cli.py", line 413, in export_dashboards
    data = dashboard_import_export.export_dashboards(db.session)
  File "/app/superset/utils/dashboard_import_export.py", line 33, in export_dashboards
    data = Dashboard.export_dashboards(dashboard_ids)
  File "/app/superset/models/dashboard.py", line 385, in export_dashboards
    json_metadata = json.loads(dashboard.json_metadata)
  File "/usr/local/lib/python3.8/json/__init__.py", line 341, in loads
    raise TypeError(f'the JSON object must be str, bytes or bytearray, '
TypeError: the JSON object must be str, bytes or bytearray, not NoneType
Run Code Online (Sandbox Code Playgroud)

请帮我调试,我还更改了“VERSIONED_EXPORT”:True

Seb*_*her 0

如果您使用 Docker 部署了 Apache Superset,这就是成功导出仪表板的方法。

先决条件:我假设您正确部署了 Superset。这是一个简单的例子

git clone https://github.com/apache/superset.git
cd superset
git checkout 3.0.0
TAG=3.0.0 docker compose -f docker-compose-non-dev.yml up
Run Code Online (Sandbox Code Playgroud)

如果您没有修改部署,您正在运行的服务应如下所示:

docker compose ps
Run Code Online (Sandbox Code Playgroud)
NAME                   IMAGE                                                  SERVICE
superset_app           apachesuperset.docker.scarf.sh/apache/superset:3.0.0   superset
superset_cache         redis:7                                                redis
superset_db            postgres:14                                            db
superset_worker        apachesuperset.docker.scarf.sh/apache/superset:3.0.0   superset-worker
superset_worker_beat   apachesuperset.docker.scarf.sh/apache/superset:3.0.0   superset-worker-beat
Run Code Online (Sandbox Code Playgroud)

superset_app容器的服务名称是superset

出口

创建导出 zip:

docker compose exec superset superset export-dashboards
Run Code Online (Sandbox Code Playgroud)

查找导出 zip 的文件名dashboard_export_20230922T132800.zip

docker compose exec superset ls -l
Run Code Online (Sandbox Code Playgroud)
-rw-r--r-- 1 root     root     238373 Sep 22 13:28 dashboard_export_20230922T132800.zip
Run Code Online (Sandbox Code Playgroud)

将导出 zip 从容器复制到您的主机:

docker compose cp superset:/app/dashboard_export_20230922T132800.zip .
Run Code Online (Sandbox Code Playgroud)

链接到文档