docker 部署 superset加载示例数据load_examples报错

原因是,连不上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

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 9
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值