新年第一篇,先在这里给大家拜年了,祝新年快乐、阖家欢乐、身体安康、牛年大吉!

ClickHouse
ClickHouse 是一个用于联机分析(OLAP)的列式数据库管理系统(DBMS),俄罗斯 Yandex 公司研发,Yandex 相当于美国的谷歌,是全球搜索引擎排名第二名的公司。ClickHouse 从 2009 年出现原型,在 2012 年生产可用,2016 年开源,经历了多年时间,现在已经成熟可用。
安装
直接下载编译好版本[1]
本文主要介绍的是这个快速方法。
下载官方编译好的 ClickHouse
$ curl -O 'https://builds.clickhouse.tech/master/macos/clickhouse' && chmod a+x ./clickhouse
下载 Server 配置文件
$ curl -O https://github.com/ClickHouse/ClickHouse/raw/master/programs/server/config.xml
下载 users 配置文件
$ curl -O https://github.com/ClickHouse/ClickHouse/raw/master/programs/server/users.xml
运行 Server
$ sudo ./clickhouse server
运行客户端
$ ./clickhouse client --version
ClickHouse client version 21.3.1.6016 (official build).
MacOS 下自行编译 ClickHouse
参考在 Mac OS X 中编译 ClickHouse[2]
Linux 下跨平台编译 ClickHouse
参考如何在 Linux 中编译 Mac OS X ClickHouse[3]
在 Docker 中运行 ClickHouse
$ docker run -d --name clickhouse-server -p 8123:8123 -p 9000:9000 \
--ulimit nofile=262144:262144 yandex/clickhouse-server
更多设置,可以参照Docker Hub[4]上的指南。
导入数据
测试数据[5]是 500 万销售数据,csv 格式(7z 压缩后 119.96MB)
建表
CREATE table sales (
`Region` text NULL,
`Country` text NULL,
`Item Type` text NULL,
`Sales Channel` text NULL,
`Order Priority` text NULL,
`Order Date` DateTime NULL,
`Order ID` Int8 NULL,
`Ship Date` DateTime NULL,
`Units Sold` Int8 NULL,
`Unit Price` FLOAT NULL,
`Unit Cost` FLOAT NULL,
`Total Revenue` FLOAT NULL,
`Total Cost` FLOAT NULL,
`Total Profit` FLOAT NULL
) ENGINE = Log导入数据 gzcat /data/sales_5m.csv.gz \
|/opt/clickhouse/clickhouse client -d default --format_csv_delimiter="," \
--date_time_input_format=best_effort\
-q 'INSERT into sales FORMAT CSVWithNames'
连接 ClickHouse Server
客户端连接 ClickHouse
直接执行语句,然后退出
$ ./clickhouse client -d default \
-q 'select Region,Country,count(1) as cnt from sales group by Region,Country'
185 rows in set. Elapsed: 0.241 sec. Processed 5.00 million rows, 223.55 MB (20.73 million rows/s., 926.68 MB/s.)
用时 0.241s,处理 500 万行数据(223.55MB),返回 185 行,速度 926.68MB/秒(2073 万行/秒)。
交互模式
$ ./clickhouse client -d default

Metabase 连接 ClickHouse
Metbase 已经准备好 下载metabase-clickhouse-driver[6] 并放到 Metabase 的 plugins 目录 重启 Metabase, 添加数据库(可能需要刷新下才能看到 ClickHouse) 数据库类型:ClickHouse 主机:localhost 端口: 8123 用户名:default 密码为空 数据库:default


DBeaver 连接 Clickhouse
全部默认即可(不用设置用户名和密码,第一次需要下载 JDBC 驱动)

Superset 连接 ClickHouse
Superset 已经安装好 安装必要插件
$ pip install clickhouse-driver[lz4,zstd] clickhouse-sqlalchemy
运行 Superset,配置数据库和表


iPython-SQL 与 ClickHouse
准备好了 Jupyter Notebook 或者 Jupyter Lab 安装好了 ipython-sql 安装 ClickHouse 必要的组件
pip install clickhouse-driver[lz4,zstd] clickhouse-sqlalchemy
%load_ext sql
# 下面代码需要执行一次,否则可能会报
# sqlalchemy.exc.NoSuchModuleError: Can't load plugin: sqlalchemy.dialects:clickhouse
from sqlalchemy.dialects import registry
registry.register(
"clickhouse", "clickhouse_sqlalchemy.drivers.http.base", "dialect"
)
registry.register(
"clickhouse.native", "clickhouse_sqlalchemy.drivers.native.base", "dialect"
)
%sql clickhouse://default:@localhost/default
%sql select version()
# 返回
version()
21.3.1.6016

PostgreSQL 通过 FDW 连接
除了之前介绍过的PostgreSQL 使用 clickhousedb_fdw 插件访问 ClickHouse的外,现在还有一个Go 语言版本[7]的。
参考资料
直接下载编译好版本: https://clickhouse.tech/docs/zh/getting-started/install/
[2]在 Mac OS X 中编译 ClickHouse: https://clickhouse.tech/docs/zh/development/build-osx/
[3]如何在Linux中编译Mac OS X ClickHouse: https://clickhouse.tech/docs/zh/development/build-cross-osx/
[4]Docker Hub: https://hub.docker.com/r/yandex/clickhouse-server/
[5]测试数据: http://eforexcel.com/wp/wp-content/uploads/2020/09/5m-Sales-Records.7z
[6]metabase-clickhouse-driver: https://github.com/enqueue/metabase-clickhouse-driver/releases
[7]Go 语言版本: https://github.com/messagebird/clickhouse-postgres-fdw
欢迎关注公众号





