当前位置 博文首页 > 文章内容

    xeus-clickhouse: Jupyter 的 ClickHouse 内核

    作者: 栏目:未分类 时间:2020-06-28 16:29:18

    本站于2023年9月4日。收到“大连君*****咨询有限公司”通知
    说我们IIS7站长博客,有一篇博文用了他们的图片。
    要求我们给他们一张图片6000元。要不然法院告我们

    为避免不必要的麻烦,IIS7站长博客,全站内容图片下架、并积极应诉
    博文内容全部不再显示,请需要相关资讯的站长朋友到必应搜索。谢谢!

    另祝:版权碰瓷诈骗团伙,早日弃暗投明。

    相关新闻:借版权之名、行诈骗之实,周某因犯诈骗罪被判处有期徒刑十一年六个月

    叹!百花齐放的时代,渐行渐远!



    在科学计算领域,Jupyter 是一个使用非常广泛的集成开发环境,它支持多种主流的编程语言比如 Python, C++, R 或者 Julia。同时,数据科学最重要的还是数据,而 SQL 是操作数据最直观的语言。前段时间看到一篇文章[1],有人给 sqlite 做了一个 jupyter 的内核,感觉很有意思。所以我尝试给 ClickHouse 做了一个 jupyter 的内核,目前已经有了一个可以试用的版本,下面做一个简单介绍。

    xeus-clickhouse: Jupyter 的 ClickHouse 内核

    clickhouse

    现状

    新内核允许用户用 ClickHouse SQL 的语法直接操作远程 CH 数据库,通过一些扩展操作比如 %CONNECT 支持与 ch cli 一样的连接参数,后续也有计划使用 jupyter magics 支持更多的数据可视化操作。

    项目参考了 jupyter sqlite 内核的实现方式,是基于 xeus [2]框架来实现的。xeus 是一个 c++ 的 lib 库,它对 jupyter 的内核做了很好的封装,我们只需要专注于内核相关的功能就可以了。目前对于 ch 的操作基于 clickhouse-cpp 来实现,它是 ch 的 cpp 客户端。

    xeus-clickhouse: Jupyter 的 ClickHouse 内核

    ch-sql

    目前实现处于早期阶段,但是基础功能已经可用。它支持了几乎 CH 所有 SQL 语法,具体例子可以参考 examples/clickhouse.ipynb [4]。xeus-clickhouse 在 jupyter notebook 和 jupyter lab 中以 HTML 表格的形式展示数据;在 jupyter console 中,我们使用 tabulate 库只做纯文本的表格。

    未来

    对于 xeus-clickhouse 未来的规划是,先打磨好稳定性,目前已知的还有一个非法字符导致内核崩溃的问题,已经提交 issue 给 xeus 仓库;另外clickhouse-cpp 不支持 ssl 连接。除了基础功能的打磨,还计划通过支持更多的 jupyter magic 来实现数据的可视化渲染,提供更方便的数据可视化能力。

    使用

    我制作了一个 Docker 镜像发布在 docker-hub [3] ,不需要安装任何环境就可以试用:

    # start jupyter with clickhouse kernal
    docker run -p 8888:8888 wangfenjin/xeus-clickhouse:v0.1.0

    # start a local clickhouse for testing
    docker run -d --name jupyter-clickhouse-server -p 8123:8123 --ulimit nofile=262144:262144 yandex/clickhouse-server

    # open the example/clickhouse.ipynb and connect to local server by
    # %CONNECT --host host.docker.internal --port 8123

    在 docker 里面连接另外一个 docker 中的 ch 可能会有问题,感觉是目前 clickhouse-cpp 对于网络的处理不太完善。感兴趣的同学也可以下载代码自己编译,具体的编译流程见 github 仓库 [4]。欢迎大家试用!

    链接

    1. https://blog.jupyter.org/a-jupyter-kernel-for-sqlite-9549c5dcf551
    2. https://github.com/jupyter-xeus/xeus
    3. https://hub.docker.com/r/wangfenjin/xeus-clickhouse
    4. https://github.com/wangfenjin/xeus-clickhouse