原因是,连不上examples 的资源。
很明显的一个现象是 superset_init 启动后不久就异常退出了。退出前报错
Creating a World's Health Bank dashboard
Loading [Birth names]
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 "/app/superset/cli.py", line 193, in load_examples
load_examples_run(load_test_data, load_big_data, only_metadata, force)
File "/app/superset/cli.py", line 137, in load_examples_run
examples.load_birth_names(only_metadata, force)
File "/app/superset/examples/birth_names.py", line 112, in load_birth_names
load_data(tbl_name, database, sample=sample)
File "/app/superset/examples/birth_names.py", line 68, in load_data
pdf = pd.read_json(get_example_data("birth_names2.json.gz"))
File "/app/superset/examples/helpers.py", line 72, in get_example_data
content = request.urlopen( # pylint: disable=consider-using-with
File "/usr/local/lib/python3.8/urllib/request.py", line 222, in urlopen
return opener.open(url, data, timeout)
File "/usr/local/lib/python3.8/urllib/request.py", line 525, in open
response = self._open(req, data)
File "/usr/local/lib/python3.8/urllib/request.py", line 542, in _open
result = self._call_chain(self.handle_open, protocol, protocol +
File "/usr/local/lib/python3.8/urllib/request.py", line 502, in _call_chain
result = func(*args)
File "/usr/local/lib/python3.8/urllib/request.py", line 1397, in https_open
return self.do_open(http.client.HTTPSConnection, req,
File "/usr/local/lib/python3.8/urllib/request.py", line 1358, in do_open
r = h.getresponse()
File "/usr/local/lib/python3.8/http/client.py", line 1348, in getresponse
response.begin()
File "/usr/local/lib/python3.8/http/client.py", line 316, in begin
version, status, reason = self._read_status()
File "/usr/local/lib/python3.8/http/client.py", line 285, in _read_status
raise RemoteDisconnected("Remote end closed connection without"
http.client.RemoteDisconnected: Remote end closed connection without response
解决方案:
1. 下载 示例数据:下载zip格式然后解压
unzip examples-data-master.zip
2. 提供示例下载服务
$ cd examples-data-master
$ python3 -m http.server 7887
Serving HTTP on 0.0.0.0 port 7887 (http://0.0.0.0:7887/) ...
3. 重启 superset_init 服务,并修改python源码。假设你主机的ip是 192.168.3.20
$ docker restart superset_init
$ docker exec -it superset_init /bin/bash
# sed -i 's/BASE_URL = .*"/BASE_URL = "http:\/\/192.168.3.20:7887\/"/g' superset/examples/helpers.py
# sed -i 's/https:\/\/github.com\/apache-superset\/examples-data\/raw\/master\//http:\/\/192.168.3.20:7887\//g' superset/examples/configs/datasets/examples/*.yaml
# sed -i 's/https:\/\/github.com\/apache-superset\/examples-data\/raw\/lowercase_columns_examples\//http:\/\/192.168.3.20:7887\//g' superset/examples/configs/datasets/examples/*.yaml
# sed -i 's/https:\/\/raw.githubusercontent.com\/apache-superset\/examples-data\/master\//http:\/\/192.168.3.20:7887\//g' superset/examples/configs/datasets/examples/*.yaml
# exit
4. 再次重启superset_init 服务
$ docker restart superset_init
5. 等待加载示例结束
出现下面日志表示加载完成
######################################################################
Init Step 4/4 [Complete] -- Loading examples
######################################################################
另外,若你想把postgres的数据外挂到宿主机上。记得 docker-compose-non-dev.yml里面的volumes下的 db_home的值改成 true。并要执行 docker volume create db_home。
volumes:
superset_home:
external: false
db_home:
external: false